/*
* Copyright 2017 NAVER Corp.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.navercorp.pinpoint.web.vo;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.navercorp.pinpoint.thrift.dto.command.TCmdActiveThreadCountRes;
import com.navercorp.pinpoint.thrift.dto.command.TRouteResult;
import org.junit.Assert;
import org.junit.Test;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* @Author Taejin Koo
*/
public class AgentActiveThreadCountListTest {
@Test
public void testName() throws Exception {
String hostName1 = "hostName1";
String hostName2 = "hostName2";
AgentActiveThreadCountFactory factory = new AgentActiveThreadCountFactory();
factory.setAgentId(hostName1);
AgentActiveThreadCount status1 = factory.createFail(TRouteResult.NOT_ACCEPTABLE.name());
TCmdActiveThreadCountRes response = new TCmdActiveThreadCountRes();
response.setActiveThreadCount(Arrays.asList(1, 2, 3, 4));
factory.setAgentId(hostName2);
AgentActiveThreadCount status2 = factory.create(response);
AgentActiveThreadCountList list = new AgentActiveThreadCountList(5);
list.add(status1);
list.add(status2);
ObjectMapper om = new ObjectMapper();
String listAsString = om.writeValueAsString(list);
Map map = om.readValue(listAsString, Map.class);
Assert.assertTrue(map.containsKey(hostName1));
Assert.assertTrue(map.containsKey(hostName2));
assertDataWithSerializedJsonString((Map) map.get(hostName1), TRouteResult.NOT_ACCEPTABLE, null);
assertDataWithSerializedJsonString((Map) map.get(hostName2), TRouteResult.OK, Arrays.asList(1, 2, 3, 4));
}
void assertDataWithSerializedJsonString(Map data, TRouteResult routeResult, List<Integer> status) {
if (routeResult == TRouteResult.OK) {
Assert.assertEquals(data.get("code"), 0);
} else {
Assert.assertEquals(data.get("code"), -1);
}
Assert.assertEquals(data.get("message"), routeResult.name());
if (status != null) {
Assert.assertEquals(data.get("status"), status);
}
}
@Test
public void testOrderName() throws Exception {
String hostName1 = "hostName1";
String hostName2 = "hostName2";
String hostName3 = "hostName3";
AgentActiveThreadCountFactory factory = new AgentActiveThreadCountFactory();
factory.setAgentId(hostName1);
AgentActiveThreadCount status1 = factory.createFail("UNKNOWN ERROR");
factory.setAgentId(hostName2);
AgentActiveThreadCount status2 = factory.createFail("UNKNOWN ERROR");
factory.setAgentId(hostName3);
AgentActiveThreadCount status3 = factory.createFail("UNKNOWN ERROR");
AgentActiveThreadCountList list = new AgentActiveThreadCountList(5);
list.add(status2);
list.add(status3);
list.add(status1);
final List<AgentActiveThreadCount> sortedList = list.getAgentActiveThreadRepository();
Assert.assertEquals(sortedList.get(0).getAgentId(), "hostName1");
Assert.assertEquals(sortedList.get(1).getAgentId(), "hostName2");
Assert.assertEquals(sortedList.get(2).getAgentId(), "hostName3");
}
}