package nebula.data.impl; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import nebula.data.Broker; import nebula.data.impl.BrokerBuilder; import nebula.data.sample.BrokerIII; import junit.framework.TestCase; public class BrokerBuilderTest extends TestCase { Log log = LogFactory.getLog(getClass()); BrokerBuilder builder; protected void setUp() throws Exception { super.setUp(); } protected void tearDown() throws Exception { super.tearDown(); } public final void testBrokerBuilder() { builder = new BrokerBuilder(); } public final void testBuilder() { builder = new BrokerBuilder(); BrokerIII a = builder.builder(BrokerIII.class); Broker.update(a, new BrokerIII() { @Override public String get(String name) { return name + "____"; } @Override public String get(String name, String name2) { return name + name2; } }); assertEquals("test____", a.get("test")); assertEquals("testname", a.get("test", "name")); } public final void testBuilder_Performance() throws InstantiationException, IllegalAccessException { builder = new BrokerBuilder(); BrokerIII a = builder.builder(BrokerIII.class); Broker.update(a, new BrokerIII() { @Override public String get(String name) { return name + "____"; } @Override public String get(String name, String name2) { return name + name2; } }); assertEquals("test____", a.get("test")); assertEquals("testname", a.get("test", "name")); int MAX; MAX = 1000 * 1000 * 1; long rawNanoEvery; { long start, end, nanoAll, nanoEvery; start = System.nanoTime(); for (int i = 0; i < MAX; i++) { a = new BrokerTestInputInterfaceBrokerAuto(); } end = System.nanoTime(); nanoAll = end - start; nanoEvery = nanoAll / MAX; rawNanoEvery = nanoEvery; log.debug("[ new ]\tAll :" + (nanoAll / (1000 * 1000)) + "s every : " + nanoEvery + " nano"); } // { // long start, end, nanoAll, nanoEvery; // // a = builder.builder(BrokerTestInputInterface.class); // BrokerInstanceBuilder bb= // builder.knownBrokeres.get(BrokerTestInputInterface.class.getName()); // // start = System.nanoTime(); // for (int i = 0; i < MAX; i++) { // a = bb.build(); // } // end = System.nanoTime(); // nanoAll = end - start; // nanoEvery = nanoAll / MAX; // // log.debug("[ builder direct ]\tAll :" + (nanoAll / (1000 // * 1000)) + "s every : " + nanoEvery + " nano"); // } // { // long start, end, nanoAll, nanoEvery; // // a = builder.builder(BrokerTestInputInterface.class); // BrokerInstanceBuilder bb= // builder.knownBrokeres.get(BrokerTestInputInterface.class.getName()); // // Class<?> clz = BrokerTestInputInterface.class; // start = System.nanoTime(); // for (int i = 0; i < MAX; i++) { // bb= builder.knownBrokeres.get(clz.getName()); // a = bb.build(); // } // end = System.nanoTime(); // nanoAll = end - start; // nanoEvery = nanoAll / MAX; // // log.debug("[ builder map ]\tAll :" + (nanoAll / (1000 // * 1000)) + "s every : " + nanoEvery + " nano"); // } { long start, end, nanoAll, nanoEvery; start = System.nanoTime(); Class<?> clz = BrokerIII.class; for (int i = 0; i < MAX; i++) { a = builder.builder(clz); } end = System.nanoTime(); nanoAll = end - start; nanoEvery = nanoAll / MAX; log.debug("[ builder ]\tAll :" + (nanoAll / (1000 * 1000)) + "s every : " + nanoEvery + " nano"); assertTrue((nanoEvery / rawNanoEvery) < 10); } // { // long start, end, nanoAll, nanoEvery; // Class<?> clz = a.getClass(); // start = System.nanoTime(); // int max = MAX / 10; // for (int i = 0; i < max; i++) { // a = (BrokerTestInputInterface) clz.newInstance(); // } // end = System.nanoTime(); // nanoAll = end - start; // nanoEvery = nanoAll / max; // // log.debug("[ newinstance ]\tAll :" + (nanoAll / (1000 // * 1000)) + "s every : " + nanoEvery + " nano"); // } } }