@Test
public void testWeightedAvgUsingGroupBy() {

	
	GroupByTransform transform = new GroupByTransform(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("scope", "latency");
	metric1.setTag("device", "device1");
       	metric1.setDatapoints(datapoints);
       
       	Metric metric2 = new Metric("scope", "latency");
	metric2.setTag("device", "device2");
       	metric2.setDatapoints(datapoints);
       
       	Metric metric3 = new Metric("scope", "latency");
	metric3.setTag("device", "device3");
       	metric3.setDatapoints(datapoints);
       
        Metric metric4 = new Metric("scope", "latency");
	metric4.setTag("device", "device4");
       	metric4.setDatapoints(datapoints);
       
       
       	Metric metric5 = new Metric("scope", "count");
	metric5.setTag("device", "device1");
       	metric5.setDatapoints(datapoints);
       
       	Metric metric6 = new Metric("scope", "count");
	metric6.setTag("device", "device2");
       	metric6.setDatapoints(datapoints);
       
       	Metric metric7 = new Metric("scope", "count");
	metric7.setTag("device", "device3");
       	metric7.setDatapoints(datapoints);
       
       	Metric metric8 = new Metric("scope", "count");
	metric8.setTag("device", "device4");
       	metric8.setDatapoints(datapoints);
       
       	metrics.add(metric1);
       	metrics.add(metric2);
       	metrics.add(metric3);
       	metrics.add(metric4);
       	metrics.add(metric5);
       	metrics.add(metric6);
       	metrics.add(metric7);
       	metrics.add(metric8);
	
	List<String> constants = new ArrayList<>();
	constants.add("(device.*)");
	constants.add("SCALE");
	
	List<Metric> result = transform.transform(null, metrics, constants);
	assertTrue(result.size() == 4);
}