@Test
public void testSerdeWithOldSerdeVersion() throws UnknownVersionException {
MetricDef brokerMetricDef = KafkaMetricDef.brokerMetricDef();
BrokerMetricSample sample = new BrokerMetricSample("host", 0, BrokerMetricSample.MIN_SUPPORTED_VERSION);
double value = 1.0;
for (MetricInfo metricInfo : brokerMetricDef.all()) {
sample.record(metricInfo, value);
value += 1;
}
sample.close((long) value);
byte[] bytes = sample.toBytes();
assertEquals(461, bytes.length);
BrokerMetricSample deserializedSample = BrokerMetricSample.fromBytes(bytes);
assertEquals("host", deserializedSample.entity().host());
assertEquals(0, deserializedSample.entity().brokerId());
assertEquals(BrokerMetricSample.MIN_SUPPORTED_VERSION, deserializedSample.deserializationVersion());
int expectedNumRecords = RawMetricType.brokerMetricTypesDiffForVersion(BrokerMetricSample.MIN_SUPPORTED_VERSION).size() + 1;
assertEquals(expectedNumRecords, deserializedSample.allMetricValues().size());
value = 1.0;
for (MetricInfo metricInfo : brokerMetricDef.all()) {
assertEquals(value, deserializedSample.metricValue(metricInfo.id()), 0.0);
value += 1;
if (value > expectedNumRecords) {
break;
}
} assertNotEquals(value, deserializedSample.sampleTime(), 0.0);
}