@Test
public void testGroupByTagOnePartial() {

	Transform transform = new GroupByTagTransform(new TransformFactory(null, null));
	Map<Long, Double> datapoints = new HashMap<Long, Double>();
	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("sp", "SP1");
		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("sp", "SP2");
		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("sp");
	constants.add("SUM");
	List<Metric> result = transform.transform(null, metrics, constants);
	assertEquals(3, result.size());
	for(Metric r : result) {
		assertTrue(
			r.getScope().equals("SP1") ||
				r.getScope().equals("SP2") ||
				r.getScope().equals("uncaptured-group"));
		assertEquals("metric1", r.getMetric());
		if (!r.getScope().equals("uncaptured-group")) {
			assertNotNull(r.getTag("sp"));
		}
		else {
			assertNull(r.getTag("sp"));
		}
	}
}