/** * Analytica - beta version - Systems Monitoring Tool * * Copyright (C) 2013, KleeGroup, direction.technique@kleegroup.com (http://www.kleegroup.com) * KleeGroup, Centre d'affaire la Boursidi�re - BP 159 - 92357 Le Plessis Robinson Cedex - France * * This program is free software; you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Foundation; * either version 3 of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with this program; * if not, see <http://www.gnu.org/licenses> * * Linking this library statically or dynamically with other modules is making a combined work based on this library. * Thus, the terms and conditions of the GNU General Public License cover the whole combination. * * As a special exception, the copyright holders of this library give you permission to link this library * with independent modules to produce an executable, regardless of the license terms of these independent modules, * and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, * for each linked independent module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based on this library. * If you modify this library, you may extend this exception to your version of the library, * but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your version. */ package io.analytica.api; import org.junit.Assert; import org.junit.Test; public final class KProcessCollectorTest { private static KProcessCollector createProcessCollector(final boolean containsSubProcess) { final String location = "mexico"; return new KProcessCollector("my-pretty-app", location, new KProcessConnector() { @Override public void add(final KProcess process) { checkProcess(process); if (containsSubProcess) { checkSubProcess(process); } //on v�rifie que l'encodage json fonctionne correctement final String sprocess = KProcessUtil.toJson(process); final KProcess process2 = KProcessUtil.fromJson(sprocess); checkProcess(process2); if (containsSubProcess) { checkSubProcess(process2); } } }); } @Test public void testSimpleProcess() { createProcessCollector(false) .startProcess("pages", "search/items") .incMeasure("beats", 10) .incMeasure("beats", 5) .incMeasure("beats", 1) .setMeasure("mails", 22) .addMetaData("tags", "fast") .stopProcess(); } @Test public void testComplexProcess() { createProcessCollector(true) .startProcess("pages", "search/items") .incMeasure("beats", 10) .incMeasure("beats", 5) .incMeasure("beats", 1) .startProcess("services", "getItems") .incMeasure("rows", 55)//subprocess .stopProcess() .setMeasure("mails", 22) .addMetaData("tags", "fast") .stopProcess(); } private static void checkSubProcess(final KProcess process) { final KProcess subProcess = process.getSubProcesses().get(0); Assert.assertEquals("my-pretty-app", subProcess.getAppName()); Assert.assertEquals("services", subProcess.getType()); Assert.assertEquals(Double.valueOf(55d), subProcess.getMeasures().get("rows")); } private static void checkProcess(final KProcess process) { Assert.assertEquals("my-pretty-app", process.getAppName()); Assert.assertEquals("pages", process.getType()); Assert.assertEquals("search/items", process.getCategory()); Assert.assertEquals("mexico", process.getLocation()); Assert.assertEquals(Double.valueOf(16d), process.getMeasures().get("beats")); Assert.assertEquals("fast", process.getMetaDatas().get("tags")); } }