public PersistentOfflineTopicStats(String topicName, String brokerName) {
        this.brokerName = brokerName;
        this.topicName = topicName;
        this.dataLedgerDetails = new ArrayList<>();
        this.cursorDetails = new HashMap<>();
        this.statGeneratedAt = new Date(System.currentTimeMillis());
    }
@Test
    public void testPersistentOfflineTopicStats() {
        PersistentOfflineTopicStats pot = new PersistentOfflineTopicStats("topic1",
                "prod1-broker1.messaging.use.example.com");
        String cursor = "cursor0";
        long time = System.currentTimeMillis();
        pot.addCursorDetails(cursor, 0, 1);
        pot.addLedgerDetails(0, time, 100, 1);
        Assert.assertEquals(pot.cursorDetails.get(cursor).cursorBacklog, 0);
        Assert.assertEquals(pot.cursorDetails.get(cursor).cursorLedgerId, 1);
        Assert.assertEquals(pot.dataLedgerDetails.get(0).entries, 0);
        Assert.assertEquals(pot.dataLedgerDetails.get(0).timestamp, time);
        Assert.assertEquals(pot.dataLedgerDetails.get(0).size, 100);
        Assert.assertEquals(pot.dataLedgerDetails.get(0).ledgerId, 1);
        long resetAt = System.currentTimeMillis();
        pot.reset();
        Assert.assertEquals(pot.storageSize, 0);
        Assert.assertEquals(pot.totalMessages, 0);
        Assert.assertEquals(pot.messageBacklog, 0);
        Assert.assertEquals(pot.dataLedgerDetails.size(), 0);
        Assert.assertEquals(pot.cursorDetails.size(), 0);
        Assert.assertTrue(pot.statGeneratedAt.getTime() - resetAt < 100);
    }