HONEYCOMB-401 - Fix compilation issues for benchmark 51/8651/1
authorJan Srnicek <jsrnicek@cisco.com>
Wed, 4 Oct 2017 07:55:39 +0000 (09:55 +0200)
committerJan Srnicek <jsrnicek@cisco.com>
Wed, 4 Oct 2017 07:56:12 +0000 (09:56 +0200)
Change-Id: I93df9e6b65273c82da308a194f4fe6488c6ce5e1
Signed-off-by: Jan Srnicek <jsrnicek@cisco.com>
infra/it/benchmark/src/main/java/io/fd/honeycomb/benchmark/data/DataBrokerConfigWriteBenchmark.java
infra/it/benchmark/src/main/java/io/fd/honeycomb/benchmark/data/DataBrokerOperReadBenchmark.java
infra/it/benchmark/src/main/java/io/fd/honeycomb/benchmark/util/NoopWriter.java
infra/it/benchmark/src/main/resources/yang-mapping/yang-index [new file with mode: 0644]
infra/it/memory-benchmark/src/main/java/io/fd/honeycomb/benchmark/memory/write/NoopWriter.java
infra/minimal-distribution-core/src/main/java/io/fd/honeycomb/infra/distro/activation/ActivationConfig.java
infra/minimal-distribution-core/src/main/java/io/fd/honeycomb/infra/distro/activation/ActiveModules.java
infra/minimal-distribution-core/src/main/java/io/fd/honeycomb/infra/distro/schema/YangModulesProvider.java

index 6d76ad2..d371489 100644 (file)
 
 package io.fd.honeycomb.benchmark.data;
 
-import com.google.inject.AbstractModule;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.Key;
-import com.google.inject.Module;
+import com.google.inject.*;
 import com.google.inject.multibindings.Multibinder;
 import com.google.inject.name.Names;
 import io.fd.honeycomb.benchmark.util.DataProvider;
 import io.fd.honeycomb.benchmark.util.DataSubmitter;
 import io.fd.honeycomb.benchmark.util.FileManager;
 import io.fd.honeycomb.benchmark.util.NoopWriter;
+import io.fd.honeycomb.infra.distro.activation.ActivationConfig;
+import io.fd.honeycomb.infra.distro.activation.ActiveModules;
 import io.fd.honeycomb.infra.distro.cfgattrs.HoneycombConfiguration;
 import io.fd.honeycomb.infra.distro.data.ConfigAndOperationalPipelineModule;
 import io.fd.honeycomb.translate.write.WriterFactory;
 import io.fd.honeycomb.translate.write.registry.ModifiableWriterRegistryBuilder;
-import java.io.IOException;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
-import java.util.concurrent.ExecutionException;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
@@ -46,22 +38,20 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.hc.test.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.hc.test.rev150105.container.with.list.list.in.container.ContainerInList;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.hc.test.rev150105.container.with.list.list.in.container.container.in.list.NestedList;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.openjdk.jmh.annotations.Benchmark;
-import org.openjdk.jmh.annotations.BenchmarkMode;
-import org.openjdk.jmh.annotations.Fork;
-import org.openjdk.jmh.annotations.Level;
-import org.openjdk.jmh.annotations.Measurement;
-import org.openjdk.jmh.annotations.Mode;
-import org.openjdk.jmh.annotations.Param;
+import org.openjdk.jmh.annotations.*;
 import org.openjdk.jmh.annotations.Scope;
-import org.openjdk.jmh.annotations.Setup;
-import org.openjdk.jmh.annotations.State;
-import org.openjdk.jmh.annotations.TearDown;
-import org.openjdk.jmh.annotations.Timeout;
-import org.openjdk.jmh.annotations.Warmup;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.IOException;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Optional;
+import java.util.concurrent.ExecutionException;
+import java.util.stream.Collectors;
+
 /**
  * Measures the performance of CONFIG writes into BA DataBroker, backed by HC infrastructure and then NOOP writers.
  */
@@ -162,6 +152,8 @@ public class DataBrokerConfigWriteBenchmark extends AbstractModule implements Fi
         try {
             instance = getHoneycombConfiguration(persistence);
             bind(HoneycombConfiguration.class).toInstance(instance);
+            bind(ActivationConfig.class).toInstance(getActivationConfig());
+            bind(ActiveModules.class).toInstance(new ActiveModules(Arrays.stream(modules).map(Module::getClass).collect(Collectors.toSet())));
         } catch (IOException e) {
             throw new RuntimeException("Unable to prepare configuration", e);
         }
@@ -196,4 +188,10 @@ public class DataBrokerConfigWriteBenchmark extends AbstractModule implements Fi
         instance.peristContextPath = FileManager.INSTANCE.createTempFile("context").toString();
         return instance;
     }
+
+    private static ActivationConfig getActivationConfig(){
+        final ActivationConfig activationConfig = new ActivationConfig();
+        activationConfig.yangModulesIndexPath = "yang-mapping";
+        return activationConfig;
+    }
 }
index 86ded0f..bdb398b 100644 (file)
 
 package io.fd.honeycomb.benchmark.data;
 
-import com.google.inject.AbstractModule;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.Key;
-import com.google.inject.Module;
+import com.google.inject.*;
 import com.google.inject.multibindings.Multibinder;
 import com.google.inject.name.Names;
 import io.fd.honeycomb.benchmark.util.DataProvider;
 import io.fd.honeycomb.benchmark.util.FileManager;
 import io.fd.honeycomb.benchmark.util.StaticReader;
+import io.fd.honeycomb.infra.distro.activation.ActivationConfig;
+import io.fd.honeycomb.infra.distro.activation.ActiveModules;
 import io.fd.honeycomb.infra.distro.cfgattrs.HoneycombConfiguration;
 import io.fd.honeycomb.infra.distro.data.ConfigAndOperationalPipelineModule;
 import io.fd.honeycomb.translate.read.Reader;
 import io.fd.honeycomb.translate.read.ReaderFactory;
 import io.fd.honeycomb.translate.read.registry.ModifiableReaderRegistryBuilder;
-import java.io.IOException;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
-import java.util.concurrent.ExecutionException;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
@@ -45,22 +37,20 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.hc.test.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.hc.test.rev150105.SimpleContainer;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.hc.test.rev150105.container.with.list.ListInContainer;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.openjdk.jmh.annotations.Benchmark;
-import org.openjdk.jmh.annotations.BenchmarkMode;
-import org.openjdk.jmh.annotations.Fork;
-import org.openjdk.jmh.annotations.Level;
-import org.openjdk.jmh.annotations.Measurement;
-import org.openjdk.jmh.annotations.Mode;
-import org.openjdk.jmh.annotations.Param;
+import org.openjdk.jmh.annotations.*;
 import org.openjdk.jmh.annotations.Scope;
-import org.openjdk.jmh.annotations.Setup;
-import org.openjdk.jmh.annotations.State;
-import org.openjdk.jmh.annotations.TearDown;
-import org.openjdk.jmh.annotations.Timeout;
-import org.openjdk.jmh.annotations.Warmup;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.IOException;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Optional;
+import java.util.concurrent.ExecutionException;
+import java.util.stream.Collectors;
+
 /**
  * Measures the performance of CONFIG writes into BA DataBroker, backed by HC infrastructure and then NOOP writers.
  */
@@ -142,6 +132,8 @@ public class DataBrokerOperReadBenchmark extends AbstractModule implements FileM
         try {
             instance = getHoneycombConfiguration(persistence);
             bind(HoneycombConfiguration.class).toInstance(instance);
+            bind(ActivationConfig.class).toInstance(getActivationConfig());
+            bind(ActiveModules.class).toInstance(new ActiveModules(Arrays.stream(modules).map(Module::getClass).collect(Collectors.toSet())));
         } catch (IOException e) {
             throw new RuntimeException("Unable to prepare configuration", e);
         }
@@ -189,4 +181,10 @@ public class DataBrokerOperReadBenchmark extends AbstractModule implements FileM
         instance.peristContextPath = FileManager.INSTANCE.createTempFile("context").toString();
         return instance;
     }
+
+    private static ActivationConfig getActivationConfig(){
+        final ActivationConfig activationConfig = new ActivationConfig();
+        activationConfig.yangModulesIndexPath = "yang-mapping";
+        return activationConfig;
+    }
 }
index f61bd1b..c424747 100644 (file)
@@ -19,11 +19,12 @@ package io.fd.honeycomb.benchmark.util;
 import io.fd.honeycomb.translate.write.WriteContext;
 import io.fd.honeycomb.translate.write.WriteFailedException;
 import io.fd.honeycomb.translate.write.Writer;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.NotThreadSafe;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 /**
  * Noop writer suitable for lists as well.
@@ -39,7 +40,7 @@ public final class NoopWriter<T extends DataObject> implements Writer<T> {
     }
 
     @Override
-    public void update(@Nonnull final InstanceIdentifier<? extends DataObject> id,
+    public void processModification(@Nonnull final InstanceIdentifier<? extends DataObject> id,
                        @Nullable final DataObject dataBefore,
                        @Nullable final DataObject dataAfter,
                        @Nonnull final WriteContext ctx) throws WriteFailedException {
@@ -60,4 +61,9 @@ public final class NoopWriter<T extends DataObject> implements Writer<T> {
                 ", counter=" + counter +
                 '}';
     }
+
+    @Override
+    public boolean supportsDirectUpdate() {
+        return true;
+    }
 }
diff --git a/infra/it/benchmark/src/main/resources/yang-mapping/yang-index b/infra/it/benchmark/src/main/resources/yang-mapping/yang-index
new file mode 100644 (file)
index 0000000..78acc66
--- /dev/null
@@ -0,0 +1 @@
+GUICE_MODULE:io.fd.honeycomb.infra.distro.schema.SchemaModule|YANG_MODULES:org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.hc.test.rev150105.$YangModelBindingProvider
index 000a176..dafca09 100644 (file)
@@ -33,13 +33,18 @@ public final class NoopWriter<T extends DataObject> implements Writer<T> {
     }
 
     @Override
-    public void update(@Nonnull final InstanceIdentifier<? extends DataObject> id,
+    public void processModification(@Nonnull final InstanceIdentifier<? extends DataObject> id,
                        @Nullable final DataObject dataBefore,
                        @Nullable final DataObject dataAfter,
                        @Nonnull final WriteContext ctx) throws WriteFailedException {
         // NOOP
     }
 
+    @Override
+    public boolean supportsDirectUpdate() {
+        return true;
+    }
+
     @Nonnull
     @Override
     public InstanceIdentifier<T> getManagedDataObjectType() {
index a17f5d6..ecda4ae 100644 (file)
 
 package io.fd.honeycomb.infra.distro.activation;
 
-import java.util.Optional;
 import net.jmob.guice.conf.core.BindConfig;
 import net.jmob.guice.conf.core.InjectConfig;
 import net.jmob.guice.conf.core.Syntax;
 
+import java.util.Optional;
+
 @BindConfig(value = "activation", syntax = Syntax.JSON)
 public class ActivationConfig {
 
     @InjectConfig("modules-resource-path")
-    private String modulesResourcePath;
+    public String modulesResourcePath;
 
     @InjectConfig("yang-modules-index-path")
-    private String yangModulesIndexPath;
+    public String yangModulesIndexPath;
 
     public String getModulesResourcePath() {
         return Optional.ofNullable(modulesResourcePath).orElse("../modules/");
index f729f00..601e9b6 100644 (file)
 
 package io.fd.honeycomb.infra.distro.activation;
 
-import static java.lang.String.format;
-
 import com.google.inject.Module;
+
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import static java.lang.String.format;
+
 /**
  * Provides static set of active activeModulesClasses
  */
index f6d8ea0..b60df1a 100644 (file)
 package io.fd.honeycomb.infra.distro.schema;
 
 
-import static java.lang.String.format;
-
-import com.google.common.base.Charsets;
-import com.google.common.io.Resources;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
 import io.fd.honeycomb.infra.distro.activation.ActivationConfig;
 import io.fd.honeycomb.infra.distro.activation.ActiveModules;
-import java.io.IOException;
-import java.net.URL;
+import org.opendaylight.yangtools.yang.binding.YangModelBindingProvider;
+
+import javax.annotation.Nonnull;
 import java.util.Collection;
 import java.util.Set;
 import java.util.stream.Collectors;
-import javax.annotation.Nonnull;
-import org.opendaylight.yangtools.yang.binding.YangModelBindingProvider;
+
+import static java.lang.String.format;
 
 /**
  * Loads active yang modules
@@ -59,10 +56,10 @@ public class YangModulesProvider implements Provider<YangModulesProvider.YangMod
                 .collect(Collectors.toSet()));
     }
 
-    static class YangModules {
+    public static class YangModules {
         private final Set<Class<? extends YangModelBindingProvider>> yangBindings;
 
-        YangModules(final Set<Class<? extends YangModelBindingProvider>> yangBindings) {
+        public YangModules(final Set<Class<? extends YangModelBindingProvider>> yangBindings) {
             this.yangBindings = yangBindings;
         }
 
@@ -86,12 +83,4 @@ public class YangModulesProvider implements Provider<YangModulesProvider.YangMod
             throw new IllegalArgumentException("Unable to load class: " + className, e);
         }
     }
-
-    static String urlToString(@Nonnull final URL url) {
-        try {
-            return Resources.toString(url, Charsets.UTF_8);
-        } catch (IOException e) {
-            throw new IllegalArgumentException("Unable to read resource from: " + url, e);
-        }
-    }
 }