    @Test(timeOut = 10_000)
    public void testHBaseTimestampStorage() throws Exception {


        final long INITIAL_TS_VALUE = 0;
        HBaseTimestampStorageConfig config = new HBaseTimestampStorageConfig();
        HBaseTimestampStorage tsStorage = new HBaseTimestampStorage(hbaseConf, config);

        // Test that the first time we get the timestamp is the initial value
        assertEquals(tsStorage.getMaxTimestamp(), INITIAL_TS_VALUE, "Initial value should be " + INITIAL_TS_VALUE);

        // Test that updating the timestamp succeeds when passing the initial value as the previous one
        long newTimestamp = 1;
        tsStorage.updateMaxTimestamp(INITIAL_TS_VALUE, newTimestamp);

        // Test setting a new timestamp fails (exception is thrown) when passing a wrong previous max timestamp
        long wrongTimestamp = 20;
        try {
            tsStorage.updateMaxTimestamp(wrongTimestamp, newTimestamp);
            Assert.fail("Shouldn't update");
        } catch (IOException e) {
            // Correct behavior
        }
        assertEquals(tsStorage.getMaxTimestamp(), newTimestamp, "Value should be still " + newTimestamp);

        // Test we can set a new timestamp when passing the right previous max timestamp
        long veryNewTimestamp = 40;
        tsStorage.updateMaxTimestamp(newTimestamp, veryNewTimestamp);
        assertEquals(tsStorage.getMaxTimestamp(), veryNewTimestamp, "Value should be " + veryNewTimestamp);

    }