package com.vmware.vhadoop.vhm.rabbit; import org.junit.Test; import static org.junit.Assert.*; import com.vmware.vhadoop.vhm.events.SerengetiLimitInstruction.SerengetiLimitAction; public class VHMJsonMessageTest { private byte[] getRawData(String action, String clusterId, String instanceNum, String routeKey, String version) { String rawJson = "{"+ "\"cluster_name\": \""+clusterId+"\","+ "\"route_key\": \""+routeKey+"\","+ "\"action\": \""+action+"\","+ "\"instance_num\": \""+instanceNum+"\","+ "\"version\": \""+version+"\""+ "}"; return rawJson.getBytes(); } @Test public void testParsing() { SerengetiLimitAction inputAction = SerengetiLimitAction.actionSetTarget; String clusterId = "cluster"; String instanceNum = "4"; String routeKey = "routeKey"; String version = "3"; VHMJsonInputMessage toTest = new VHMJsonInputMessage(getRawData(inputAction.toString(), clusterId, instanceNum, routeKey, version)); SerengetiLimitAction outputAction = toTest.getAction(); assertTrue(outputAction.equals(inputAction)); assertEquals(outputAction.toString(), inputAction.toString()); assertEquals(clusterId, toTest.getClusterId()); assertEquals(Integer.parseInt(instanceNum), toTest.getInstanceNum()); assertEquals(routeKey, toTest.getRouteKey()); } private void assertEmptyResult(VHMJsonInputMessage toTest) { assertNull(toTest.getAction()); assertNull(toTest.getClusterId()); assertEquals(toTest.getInstanceNum(), 0); assertNull(toTest.getRouteKey()); } @Test public void unknownVersion() { SerengetiLimitAction inputAction = SerengetiLimitAction.actionSetTarget; String clusterId = "cluster"; String instanceNum = "4"; String routeKey = "routeKey"; String version = "2"; VHMJsonInputMessage toTest = new VHMJsonInputMessage(getRawData(inputAction.toString(), clusterId, instanceNum, routeKey, version)); assertEmptyResult(toTest); } @Test public void unknownAction() { String clusterId = "cluster"; String instanceNum = "4"; String routeKey = "routeKey"; String version = "3"; VHMJsonInputMessage toTest = new VHMJsonInputMessage(getRawData("invalid", clusterId, instanceNum, routeKey, version)); assertEmptyResult(toTest); } @Test public void emptyInput() { VHMJsonInputMessage toTest = new VHMJsonInputMessage(new byte[0]); assertEmptyResult(toTest); } @Test public void unparsableInput() { VHMJsonInputMessage toTest = new VHMJsonInputMessage(new byte[]{1,2,3,4,5,6}); assertEmptyResult(toTest); } }