@Test
public void testGroupBySingleCommonTag() {

	
	GroupByTagTransform transform = new GroupByTagTransform(new TransformFactory(null, null));
	
	Map<Long, Double> datapoints = new HashMap<>();
       datapoints.put(1000L, 1.0);
	
	List<Metric> metrics = new ArrayList<>();
	
	Metric metric1 = new Metric("system.DCA.xy1", "metric1");
       metric1.setDatapoints(datapoints);
       metric1.setTags(new HashMap<String, String>(){{
		put("dc", "DCA");
           put("tag1", "value1");
           put("tag2", "value1");
       }});
       
       Metric metric2 = new Metric("system.DCA.xy2", "metric1");
       metric2.setDatapoints(datapoints);
	metric2.setTags(new HashMap<String, String>(){{
		put("dc", "DCA");
		put("tag1", "value2");
		put("tag2", "value2");
	}});
       Metric metric3 = new Metric("system.DCB.xy1", "metric1");
       metric3.setDatapoints(datapoints);
	metric3.setTags(new HashMap<String, String>(){{
		put("dc", "DCB");
		put("tag1", "value3");
		put("tag2", "value3");
	}});
       Metric metric4 = new Metric("system.DCB.xy2", "metric1");
       metric4.setDatapoints(datapoints);
	metric4.setTags(new HashMap<String, String>(){{
		put("dc", "DCB");
		put("tag1", "value4");
		put("tag2", "value4");
	}});
	metrics.add(metric1);
	metrics.add(metric2);
	metrics.add(metric3);
	metrics.add(metric4);
	
	List<String> constants = new ArrayList<>();
	constants.add("dc");
	constants.add("SUM");
	
	List<Metric> result = transform.transform(null, metrics, constants);
	assertTrue(result.size() == 2);
	for(Metric r : result) {
		assertEquals(new Double(2.0), r.getDatapoints().get(1000L));
		assertTrue(r.getScope().equals("DCA") || r.getScope().equals("DCB"));
		assertTrue(r.getMetric().equals("metric1"));
		assertTrue(r.getTag("dc") != null);
	}
}