/** * Copyright 2011-2012 Universite Joseph Fourier, LIG, ADELE team * 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 fr.imag.adele.apam.perfTest; import java.util.Properties; import java.util.Set; import java.util.UUID; import org.apache.felix.ipojo.ComponentInstance; import org.apache.felix.ipojo.Factory; import org.apache.felix.ipojo.InstanceManager; public class ComponentTestImpl implements Service { public static final String COMPONENTTESTIMPLFACTORYNAME = "component.test.impl.ipojo"; public static final String CURRENTLEVELPROPERTY = "currentLevel"; public static int limit; public static int instances; public static Set<Integer> checkpoints; public static long startTime; private boolean notEnd = true; private String currentLevel; public static Factory factory; private ComponentTestImpl instance1; private ComponentTestImpl instance2; private final int miliers; public ComponentTestImpl() { ComponentTestImpl.instances++; // System.out.println("called; Instances : " + ComponentTestImpl.instances); miliers = ComponentTestImpl.instances / 1000; if (miliers * 1000 == ComponentTestImpl.instances) { // if (ComponentTestImpl.checkpoints.contains(Integer.valueOf(ComponentTestImpl.instances))) { Runtime r = Runtime.getRuntime(); r.gc(); long usedMemory = r.totalMemory() - r.freeMemory(); usedMemory = usedMemory / 1024; usedMemory = usedMemory / 1024; long duration = (System.nanoTime() - ComponentTestImpl.startTime) / 1000000; System.out.println("NbInstances " + ComponentTestImpl.instances + " / usedMemory: " + usedMemory + "; duration (mili sec): " + duration); } } // public ComponentTestImpl() { // Runtime r = Runtime.getRuntime(); // // ComponentTestImpl.instances = ComponentTestImpl.instances + 1; // if (ComponentTestImpl.checkpoints.contains(Integer.valueOf(ComponentTestImpl.instances))) { // r.gc(); // double usedMemory = r.totalMemory() - r.freeMemory(); // usedMemory = usedMemory / 1024; // usedMemory = usedMemory / 1024; // long duration = (System.nanoTime() - ComponentTestImpl.startTime) / 1000000; // System.out.println("NbInstances " + ComponentTestImpl.instances + // " / usedMemory: " + usedMemory + "; duration (mili sec): " + duration); // } // } public void start() { if (currentLevel == null) { return; // throw new NullPointerException("currentLevel is null"); } int i = Integer.valueOf(currentLevel).intValue(); if (i <= ComponentTestImpl.limit) { try { i++; // System.out.println("current level = " + currentLevel); Properties props = new Properties(); props.put(ComponentTestImpl.CURRENTLEVELPROPERTY, Integer.valueOf(i).toString()); props.put("instance.name", UUID.randomUUID().toString()); ComponentInstance instanceRef = ComponentTestImpl.factory.createComponentInstance(props); instanceRef.start(); instance1 = (ComponentTestImpl) ((InstanceManager) instanceRef).getPojoObject(); props.put("instance.name", UUID.randomUUID().toString()); instanceRef = ComponentTestImpl.factory.createComponentInstance(props); instanceRef.start(); instance2 = (ComponentTestImpl) ((InstanceManager) instanceRef).getPojoObject(); props = null; } catch (Exception e) { e.printStackTrace(); } } else { notEnd = false; } } public void stop() { instance1 = null; instance2 = null; } // @Override public void call(int i) { if (notEnd) { instance1.call(i - 1); instance2.call(i - 1); } } public void callPerf(int i) { } }