/* * Copyright (c) 2016 Frinx s.r.o. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.tsdr.persistence.elasticsearch; import static com.google.common.truth.Truth.assertThat; import java.math.BigDecimal; import com.google.common.collect.Lists; import org.junit.Test; import org.opendaylight.tsdr.persistence.elasticsearch.TsdrRecordPayload.RecordAttributesPayload; import org.opendaylight.tsdr.persistence.elasticsearch.TsdrRecordPayload.RecordKeysPayload; import org.opendaylight.yang.gen.v1.opendaylight.tsdr.binary.data.rev160325.storetsdrbinaryrecord.input.TSDRBinaryRecord; import org.opendaylight.yang.gen.v1.opendaylight.tsdr.log.data.rev160325.storetsdrlogrecord.input.TSDRLogRecord; import org.opendaylight.yang.gen.v1.opendaylight.tsdr.metric.data.rev160325.storetsdrmetricrecord.input.TSDRMetricRecord; import org.opendaylight.yang.gen.v1.opendaylight.tsdr.rev150219.DataCategory; import org.opendaylight.yang.gen.v1.opendaylight.tsdr.rev150219.TSDRRecord; /** * Test method toStore of {@link TsdrRecordPayload}. All possible cases * * @author Lukas Beles(lbeles@frinx.io) */ public class TsdrRecordPayloadTest { /** * Test conversion of Metric Record * * @throws Exception */ @Test public void toMetricRecord() throws Exception { final String nodeId = "TestNodeID"; final Long timestamp = 1257894000000000000L; final DataCategory category = DataCategory.EXTERNAL; final String name = "TestName"; final BigDecimal value = new BigDecimal(8128); final String rkName = "TestRKName"; final String rkValue = "TestRKValue"; RecordKeysPayload recordKeys = new RecordKeysPayload(); recordKeys.setKeyName(rkName); recordKeys.setKeyValue(rkValue); TsdrRecordPayload payload = new TsdrRecordPayload(); payload.setNodeID(nodeId); payload.setTimeStamp(timestamp); payload.setTSDRDataCategory(category); payload.setMetricName(name); payload.setMetricValue(value); payload.setRecordKeys(Lists.newArrayList(recordKeys)); TSDRRecord record = payload.toRecord(ElasticsearchStore.RecordType.METRIC); assertThat(record).isInstanceOf(TSDRMetricRecord.class); TSDRMetricRecord mr = (TSDRMetricRecord) record; assertThat(mr.getNodeID()).isEqualTo(nodeId); assertThat(mr.getTimeStamp()).isEqualTo(timestamp); assertThat(mr.getTSDRDataCategory()).isEqualTo(category); assertThat(mr.getMetricName()).isEqualTo(name); assertThat(mr.getMetricValue()).isEqualTo(value); assertThat(mr.getRecordKeys()).isNotEmpty(); assertThat(mr.getRecordKeys().size()).isEqualTo(1); assertThat(mr.getRecordKeys().get(0).getKeyName()).isEqualTo(rkName); assertThat(mr.getRecordKeys().get(0).getKeyValue()).isEqualTo(rkValue); } /** * Test conversion of Log Record * * @throws Exception */ @Test public void toLogRecord() throws Exception { final String nodeId = "TestNodeID"; final Long timestamp = 1257894000000000000L; final DataCategory category = DataCategory.EXTERNAL; final Integer index = 1; final String text = "Test Text"; final String rkName = "TestRKName"; final String rkValue = "TestRKValue"; final String raName = "TestRAName"; final String raValue = "TestRAValue"; RecordAttributesPayload recordAttributes = new RecordAttributesPayload(); recordAttributes.setName(raName); recordAttributes.setValue(raValue); RecordKeysPayload recordKeys = new RecordKeysPayload(); recordKeys.setKeyName(rkName); recordKeys.setKeyValue(rkValue); TsdrRecordPayload payload = new TsdrRecordPayload(); payload.setNodeID(nodeId); payload.setTimeStamp(timestamp); payload.setTSDRDataCategory(category); payload.setIndex(index); payload.setRecordFullText(text); payload.setRecordAttributes(Lists.newArrayList(recordAttributes)); payload.setRecordKeys(Lists.newArrayList(recordKeys)); TSDRRecord record = payload.toRecord(ElasticsearchStore.RecordType.LOG); assertThat(record).isInstanceOf(TSDRLogRecord.class); TSDRLogRecord lr = (TSDRLogRecord) record; assertThat(lr.getNodeID()).isEqualTo(nodeId); assertThat(lr.getTimeStamp()).isEqualTo(timestamp); assertThat(lr.getTSDRDataCategory()).isEqualTo(category); assertThat(lr.getIndex()).isEqualTo(index); assertThat(lr.getRecordFullText()).isEqualTo(text); assertThat(lr.getRecordAttributes()).isNotEmpty(); assertThat(lr.getRecordAttributes().size()).isEqualTo(1); assertThat(lr.getRecordAttributes().get(0).getName()).isEqualTo(raName); assertThat(lr.getRecordAttributes().get(0).getValue()).isEqualTo(raValue); assertThat(lr.getRecordKeys()).isNotEmpty(); assertThat(lr.getRecordKeys().size()).isEqualTo(1); assertThat(lr.getRecordKeys().get(0).getKeyName()).isEqualTo(rkName); assertThat(lr.getRecordKeys().get(0).getKeyValue()).isEqualTo(rkValue); } /** * Test conversion of Binary Record * * @throws Exception */ @Test public void toBinaryRecord() throws Exception { final String nodeId = "TestNodeID"; final Long timestamp = 1257894000000000000L; final DataCategory category = DataCategory.EXTERNAL; final Integer index = 1; final byte[] data = "Test Data".getBytes(); final String rkName = "TestRKName"; final String rkValue = "TestRKValue"; final String raName = "TestRAName"; final String raValue = "TestRAValue"; RecordAttributesPayload recordAttributes = new RecordAttributesPayload(); recordAttributes.setName(raName); recordAttributes.setValue(raValue); RecordKeysPayload recordKeys = new RecordKeysPayload(); recordKeys.setKeyName(rkName); recordKeys.setKeyValue(rkValue); TsdrRecordPayload payload = new TsdrRecordPayload(); payload.setNodeID(nodeId); payload.setTimeStamp(timestamp); payload.setTSDRDataCategory(category); payload.setIndex(index); payload.setData(data); payload.setRecordAttributes(Lists.newArrayList(recordAttributes)); payload.setRecordKeys(Lists.newArrayList(recordKeys)); TSDRRecord record = payload.toRecord(ElasticsearchStore.RecordType.BINARY); assertThat(record).isInstanceOf(TSDRBinaryRecord.class); TSDRBinaryRecord br = (TSDRBinaryRecord) record; assertThat(br.getNodeID()).isEqualTo(nodeId); assertThat(br.getTimeStamp()).isEqualTo(timestamp); assertThat(br.getTSDRDataCategory()).isEqualTo(category); assertThat(br.getIndex()).isEqualTo(index); assertThat(br.getData()).isEqualTo(data); assertThat(br.getRecordAttributes()).isNotEmpty(); assertThat(br.getRecordAttributes().size()).isEqualTo(1); assertThat(br.getRecordAttributes().get(0).getName()).isEqualTo(raName); assertThat(br.getRecordAttributes().get(0).getValue()).isEqualTo(raValue); assertThat(br.getRecordKeys()).isNotEmpty(); assertThat(br.getRecordKeys().size()).isEqualTo(1); assertThat(br.getRecordKeys().get(0).getKeyName()).isEqualTo(rkName); assertThat(br.getRecordKeys().get(0).getKeyValue()).isEqualTo(rkValue); } }