@Override public short calculatePercentCompletion(Watermark lowWatermark, Watermark highWatermark) { TestWatermark testLowWatermark = GSON.fromJson(lowWatermark.toJson(), TestWatermark.class); TestWatermark testHighWatermark = GSON.fromJson(highWatermark.toJson(), TestWatermark.class); return (short) (100 * (this.watermark - testLowWatermark.getLongWatermark()) / (testHighWatermark .getLongWatermark() - testLowWatermark.getLongWatermark())); }
@Test public void testWatermarkWorkUnitStateSerialization() { long actualHighWatermarkValue = 50; TestWatermark actualHighWatermark = new TestWatermark(); actualHighWatermark.setLongWatermark(actualHighWatermarkValue); WorkUnitState workUnitState = new WorkUnitState(); workUnitState.setActualHighWatermark(actualHighWatermark); TestWatermark deserializedActualHighWatermark = WatermarkSerializerHelper.convertJsonToWatermark(workUnitState.getActualHighWatermark(), TestWatermark.class); Assert.assertEquals(deserializedActualHighWatermark.getLongWatermark(), actualHighWatermarkValue); } }
@Test public void testWatermarkWorkUnitSerialization() { long lowWatermarkValue = 0; long expectedHighWatermarkValue = 100; TestWatermark lowWatermark = new TestWatermark(); lowWatermark.setLongWatermark(lowWatermarkValue); TestWatermark expectedHighWatermark = new TestWatermark(); expectedHighWatermark.setLongWatermark(expectedHighWatermarkValue); WatermarkInterval watermarkInterval = new WatermarkInterval(lowWatermark, expectedHighWatermark); WorkUnit workUnit = new WorkUnit(null, null, watermarkInterval); TestWatermark deserializedLowWatermark = WatermarkSerializerHelper.convertJsonToWatermark(workUnit.getLowWatermark(), TestWatermark.class); TestWatermark deserializedExpectedHighWatermark = WatermarkSerializerHelper.convertJsonToWatermark(workUnit.getExpectedHighWatermark(), TestWatermark.class); Assert.assertEquals(deserializedLowWatermark.getLongWatermark(), lowWatermarkValue); Assert.assertEquals(deserializedExpectedHighWatermark.getLongWatermark(), expectedHighWatermarkValue); }