/* * Copyright (c) 2016 Cisco Systems, Inc. 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.spi.util; import org.junit.Assert; import org.junit.Test; import org.opendaylight.yang.gen.v1.opendaylight.tsdr.log.data.rev160325.storetsdrlogrecord.input.TSDRLogRecord; import org.opendaylight.yang.gen.v1.opendaylight.tsdr.log.data.rev160325.storetsdrlogrecord.input.TSDRLogRecordBuilder; import org.opendaylight.yang.gen.v1.opendaylight.tsdr.log.data.rev160325.tsdrlog.RecordAttributes; import org.opendaylight.yang.gen.v1.opendaylight.tsdr.log.data.rev160325.tsdrlog.RecordAttributesBuilder; import org.opendaylight.yang.gen.v1.opendaylight.tsdr.metric.data.rev160325.storetsdrmetricrecord.input.TSDRMetricRecord; import org.opendaylight.yang.gen.v1.opendaylight.tsdr.metric.data.rev160325.storetsdrmetricrecord.input.TSDRMetricRecordBuilder; import org.opendaylight.yang.gen.v1.opendaylight.tsdr.rev150219.DataCategory; import org.opendaylight.yang.gen.v1.opendaylight.tsdr.rev150219.tsdrrecord.RecordKeys; import org.opendaylight.yang.gen.v1.opendaylight.tsdr.rev150219.tsdrrecord.RecordKeysBuilder; import java.math.BigDecimal; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; /** * @author saichler@gmail.com **/ public class FormatUtilTest { public static TSDRLogRecord createLogRecord(){ TSDRLogRecordBuilder b = new TSDRLogRecordBuilder(); b.setNodeID("Test"); b.setTimeStamp(System.currentTimeMillis()); b.setTSDRDataCategory(DataCategory.EXTERNAL); b.setRecordFullText("Some syslog text"); List<RecordKeys> recs = new ArrayList<>(); RecordKeysBuilder rb = new RecordKeysBuilder(); rb.setKeyValue("Test1"); rb.setKeyName("Test2"); recs.add(rb.build()); b.setRecordKeys(recs); List<RecordAttributes> attributes = new LinkedList<>(); RecordAttributesBuilder rab = new RecordAttributesBuilder(); rab.setName("RATest"); rab.setValue("RAValue"); attributes.add(rab.build()); b.setRecordAttributes(attributes); return b.build(); } public static TSDRMetricRecord createMetricRecord(){ TSDRMetricRecordBuilder b = new TSDRMetricRecordBuilder(); b.setNodeID("Test"); b.setTimeStamp(System.currentTimeMillis()); b.setMetricName("Test"); b.setMetricValue(new BigDecimal(11D)); b.setTSDRDataCategory(DataCategory.EXTERNAL); List<RecordKeys> recs = new ArrayList<>(); RecordKeysBuilder rb = new RecordKeysBuilder(); rb.setKeyValue("Test1"); rb.setKeyName("Test2"); recs.add(rb.build()); b.setRecordKeys(recs); return b.build(); } public static TSDRLogRecord createDataCategoryLogRecord(){ TSDRLogRecordBuilder b = new TSDRLogRecordBuilder(); b.setTimeStamp(System.currentTimeMillis()); b.setTSDRDataCategory(DataCategory.NETFLOW); return b.build(); } public static TSDRMetricRecord createDataCategoryMetricRecord(){ TSDRMetricRecordBuilder b = new TSDRMetricRecordBuilder(); b.setTimeStamp(System.currentTimeMillis()); b.setTSDRDataCategory(DataCategory.EXTERNAL); return b.build(); } public static TSDRLogRecord createLogRecordWithDCAndNID(){ TSDRLogRecordBuilder b = new TSDRLogRecordBuilder(); b.setTimeStamp(System.currentTimeMillis()); b.setTSDRDataCategory(DataCategory.NETFLOW); b.setNodeID("Test"); b.setRecordFullText("Some syslog text"); List<RecordAttributes> attributes = new LinkedList<>(); RecordAttributesBuilder rab = new RecordAttributesBuilder(); rab.setName("RATest"); rab.setValue("RAValue"); attributes.add(rab.build()); b.setRecordAttributes(attributes); return b.build(); } public static TSDRLogRecord createLogRecordWithDCAndRK(){ TSDRLogRecordBuilder b = new TSDRLogRecordBuilder(); b.setTimeStamp(System.currentTimeMillis()); b.setTSDRDataCategory(DataCategory.NETFLOW); List<RecordKeys> recs = new ArrayList<>(); RecordKeysBuilder rb = new RecordKeysBuilder(); rb.setKeyValue("Test1"); rb.setKeyName("Test2"); recs.add(rb.build()); b.setRecordKeys(recs); b.setRecordFullText("Some syslog text"); List<RecordAttributes> attributes = new LinkedList<>(); RecordAttributesBuilder rab = new RecordAttributesBuilder(); rab.setName("RATest"); rab.setValue("RAValue"); attributes.add(rab.build()); b.setRecordAttributes(attributes); return b.build(); } public static TSDRMetricRecord createMetricRecordWithDCAndNID(){ TSDRMetricRecordBuilder b = new TSDRMetricRecordBuilder(); b.setTimeStamp(System.currentTimeMillis()); b.setTSDRDataCategory(DataCategory.SNMPINTERFACES); b.setNodeID("Test"); return b.build(); } public static TSDRMetricRecord createMetricRecordWithDCAndMN(){ TSDRMetricRecordBuilder b = new TSDRMetricRecordBuilder(); b.setTimeStamp(System.currentTimeMillis()); b.setTSDRDataCategory(DataCategory.SNMPINTERFACES); b.setMetricName("Test"); b.setMetricValue(new BigDecimal(11D)); return b.build(); } public static TSDRMetricRecord createMetricRecordWithDCAndRK(){ TSDRMetricRecordBuilder b = new TSDRMetricRecordBuilder(); b.setTimeStamp(System.currentTimeMillis()); b.setTSDRDataCategory(DataCategory.SNMPINTERFACES); List<RecordKeys> recs = new ArrayList<>(); RecordKeysBuilder rb = new RecordKeysBuilder(); rb.setKeyValue("Test1"); rb.setKeyName("Test2"); recs.add(rb.build()); b.setRecordKeys(recs); return b.build(); } @Test public void testGetTSDRMetricKey(){ String key = FormatUtil.getTSDRMetricKey(createMetricRecord()); Assert.assertEquals("[NID=Test][DC=EXTERNAL][MN=Test][RK=Test2:Test1]",key); } @Test public void testGetTSDRLogKey(){ String key = FormatUtil.getTSDRLogKey(createLogRecord()); Assert.assertEquals("[NID=Test][DC=EXTERNAL][RK=Test2:Test1]",key); } @Test public void testGetTSDRLogKeyWithAttributes(){ String key = FormatUtil.getTSDRLogKeyWithRecordAttributes(createLogRecord()); Assert.assertEquals("[NID=Test][DC=EXTERNAL][RK=Test2:Test1][RA=RATest:RAValue]",key); } @Test public void testGetTSDRLogAttributesFromKey(){ String key = FormatUtil.getTSDRLogKeyWithRecordAttributes(createLogRecord()); List<RecordAttributes> list = FormatUtil.getRecordAttributesFromTSDRKey(key); Assert.assertEquals(list.size(),1); Assert.assertEquals("RATest",list.get(0).getName()); } @Test public void testGetTSDRLogKeyWithTimeStamp(){ String key = FormatUtil.getTSDRLogKeyWithTimeStamp(createLogRecord()); List<RecordKeys> list = FormatUtil.getRecordKeysFromTSDRKey(key); Assert.assertEquals(list.size(),1); Assert.assertEquals("Test2",list.get(0).getKeyName()); } @Test public void testGetTSDRMetricKeyWithTimeStamp(){ String key = FormatUtil.getTSDRMetricKeyWithTimeStamp(createMetricRecord()); List<RecordKeys> list = FormatUtil.getRecordKeysFromTSDRKey(key); Assert.assertEquals(list.size(),1); Assert.assertEquals("Test2",list.get(0).getKeyName()); } @Test public void testIsValidKey(){ String key = FormatUtil.getTSDRMetricKey(createMetricRecord()); Assert.assertTrue(FormatUtil.isValidTSDRKey(key)); } @Test public void testIsValidTSDRLogKey(){ String key = FormatUtil.getTSDRLogKey(createLogRecord()); Assert.assertTrue(FormatUtil.isValidTSDRLogKey(key)); } @Test public void testIsDataCategoryKey(){ //test invalid tsdrMetricKey String key = "[NID=][MN=][DC=][RK=]"; Assert.assertFalse(FormatUtil.isDataCategoryKey(key)); key = "[NID=][MN=]DC=[RK=]"; Assert.assertFalse(FormatUtil.isDataCategoryKey(key)); key = "[DC=PORTSTATS][MN=][RK=]"; Assert.assertFalse(FormatUtil.isDataCategoryKey(key)); key = "[NID=][DC=PORTSTATS][MN=]"; Assert.assertFalse(FormatUtil.isDataCategoryKey(key)); //test invalid tsdrlogkey key = "[NID=][DC=][RK=]"; Assert.assertFalse(FormatUtil.isDataCategoryKey(key)); key = "[NID=]DC=[RK=]"; Assert.assertFalse(FormatUtil.isDataCategoryKey(key)); key = "[DC=][RK=]"; Assert.assertFalse(FormatUtil.isDataCategoryKey(key)); key = "[NID=][DC=PORTSTATS]"; Assert.assertFalse(FormatUtil.isDataCategoryKey(key)); //test when the key is a valid tsdrKey //test metrickey key = FormatUtil.getTSDRMetricKey(createMetricRecordWithDCAndNID()); Assert.assertFalse(FormatUtil.isDataCategoryKey(key)); key = FormatUtil.getTSDRMetricKey(createMetricRecordWithDCAndMN()); Assert.assertFalse(FormatUtil.isDataCategoryKey(key)); key = FormatUtil.getTSDRMetricKey(createMetricRecordWithDCAndRK()); Assert.assertFalse(FormatUtil.isDataCategoryKey(key)); key = FormatUtil.getTSDRMetricKey(createDataCategoryMetricRecord()); Assert.assertTrue(FormatUtil.isDataCategoryKey(key)); //test logkey key = FormatUtil.getTSDRLogKey(createLogRecordWithDCAndNID()); Assert.assertFalse(FormatUtil.isDataCategory(key)); key = FormatUtil.getTSDRLogKey(createLogRecordWithDCAndRK()); Assert.assertFalse(FormatUtil.isDataCategoryKey(key)); Assert.assertFalse(FormatUtil.isDataCategory(key)); key = FormatUtil.getTSDRLogKey(createDataCategoryLogRecord()); Assert.assertTrue(FormatUtil.isDataCategoryKey(key)); } @Test public void testGetTimeStampFromTSDRKey(){ long time = System.currentTimeMillis(); String key = FormatUtil.getTSDRMetricKeyWithTimeStamp(createMetricRecord()); long timeStamp = FormatUtil.getTimeStampFromTSDRKey(key); Assert.assertTrue(timeStamp>=time && timeStamp<=time+1000); } }