bigtop-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rnowl...@apache.org
Subject [01/11] bigtop git commit: BIGTOP-1984. Extract samplers library from BigPetStore data generator
Date Tue, 25 Aug 2015 14:21:35 GMT
Repository: bigtop
Updated Branches:
  refs/heads/master 3bbbb557a -> 15af83ebd


http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/markovmodels/TestMarkovModelBuilder.java
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/markovmodels/TestMarkovModelBuilder.java
b/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/markovmodels/TestMarkovModelBuilder.java
new file mode 100644
index 0000000..6aa6a6a
--- /dev/null
+++ b/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/markovmodels/TestMarkovModelBuilder.java
@@ -0,0 +1,76 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.bigtop.datagenerators.samplers.markovmodels;
+
+import org.apache.bigtop.datagenerators.samplers.markovmodels.MarkovModel;
+import org.apache.bigtop.datagenerators.samplers.markovmodels.MarkovModelBuilder;
+import org.junit.Test;
+
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertEquals;
+import static org.junit.matchers.JUnitMatchers.*;
+
+public class TestMarkovModelBuilder
+{
+
+	@Test
+	public void testAddStateState()
+	{
+		MarkovModelBuilder<String> builder = MarkovModelBuilder.create();
+
+		builder.addStartState("a", 1.0);
+
+		MarkovModel<String> msm = builder.build();
+
+		assertThat(msm.getStartWeights().keySet(), hasItem("a"));
+		assertEquals((double) msm.getStartWeights().get("a"), (double) 1.0, 0.000001);
+
+	}
+
+	@Test
+	public void testAddEdgeTransition()
+	{
+		MarkovModelBuilder<String> builder = MarkovModelBuilder.create();
+
+		builder.addTransition("a", "b", 1.0);
+
+		MarkovModel<String> msm = builder.build();
+
+		assertThat(msm.getTransitionWeights().keySet(), hasItem("a"));
+		assertThat(msm.getTransitionWeights().get("a").keySet(), hasItem("b"));
+		assertEquals((double) msm.getTransitionWeights().get("a").get("b"), (double) 1.0, 0.000001);
+	}
+
+	@Test
+	public void testBuildMSM()
+	{
+		MarkovModelBuilder<String> builder = MarkovModelBuilder.create();
+
+		builder.addStartState("a", 1.0);
+		builder.addTransition("a", "b", 1.0);
+		builder.addTransition("a", "c", 1.0);
+
+		MarkovModel<String> msm = builder.build();
+
+		assertThat(msm.getStartWeights().keySet(), hasItem("a"));
+		assertThat(msm.getTransitionWeights().keySet(), hasItem("a"));
+		assertThat(msm.getTransitionWeights().get("a").keySet(), hasItem("b"));
+		assertThat(msm.getTransitionWeights().get("a").keySet(), hasItem("c"));
+		assertEquals((double) msm.getTransitionWeights().get("a").get("b"), (double) 1.0, 0.000001);
+		assertEquals((double) msm.getTransitionWeights().get("a").get("c"), (double) 1.0, 0.000001);
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/markovmodels/TestMarkovProcess.java
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/markovmodels/TestMarkovProcess.java
b/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/markovmodels/TestMarkovProcess.java
new file mode 100644
index 0000000..a26f31c
--- /dev/null
+++ b/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/markovmodels/TestMarkovProcess.java
@@ -0,0 +1,53 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.bigtop.datagenerators.samplers.markovmodels;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
+import static org.junit.matchers.JUnitMatchers.hasItem;
+
+import java.util.Arrays;
+
+import org.apache.bigtop.datagenerators.samplers.SeedFactory;
+import org.apache.bigtop.datagenerators.samplers.markovmodels.MarkovModel;
+import org.apache.bigtop.datagenerators.samplers.markovmodels.MarkovModelBuilder;
+import org.apache.bigtop.datagenerators.samplers.markovmodels.MarkovProcess;
+import org.junit.Test;
+
+public class TestMarkovProcess
+{
+
+	@Test
+	public void test() throws Exception
+	{
+		SeedFactory factory = new SeedFactory(1245);
+		MarkovModelBuilder<String> builder = MarkovModelBuilder.create();
+
+		builder.addStartState("a", 1.0);
+		builder.addTransition("a", "b", 1.0);
+		builder.addTransition("a", "c", 1.0);
+
+		MarkovModel<String> msm = builder.build();
+		MarkovProcess<String> process = MarkovProcess.create(msm, factory);
+
+		String firstState = process.sample();
+		assertEquals(firstState, "a");
+
+		String secondState = process.sample();
+		assertThat(Arrays.asList("b", "c"), hasItem(secondState));
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/pdfs/TestMultinomialPDF.java
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/pdfs/TestMultinomialPDF.java
b/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/pdfs/TestMultinomialPDF.java
new file mode 100644
index 0000000..17e1d5e
--- /dev/null
+++ b/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/pdfs/TestMultinomialPDF.java
@@ -0,0 +1,42 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.bigtop.datagenerators.samplers.pdfs;
+
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.bigtop.datagenerators.samplers.pdfs.MultinomialPDF;
+import org.junit.Assert;
+import org.junit.Test;
+
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Sets;
+
+public class TestMultinomialPDF
+{
+
+	@Test
+	public void testToString()
+	{
+		Map<String, Double> objects = ImmutableMap.of("A", 0.1, "B", 0.3, "C", 0.5);
+		MultinomialPDF<String> pdf = new MultinomialPDF<String>(objects);
+		String string = pdf.toString();
+		Set<String> observed = Sets.newHashSet(string.split("\n"));
+		Set<String> expected = Sets.newHashSet("0.1,A", "0.3,B", "0.5,C");
+
+		Assert.assertEquals(expected, observed);
+	}
+}

http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/samplers/TestBoundedMultiModalGaussianSampler.java
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/samplers/TestBoundedMultiModalGaussianSampler.java
b/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/samplers/TestBoundedMultiModalGaussianSampler.java
new file mode 100644
index 0000000..54d9e41
--- /dev/null
+++ b/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/samplers/TestBoundedMultiModalGaussianSampler.java
@@ -0,0 +1,50 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.bigtop.datagenerators.samplers.samplers;
+
+import static org.junit.Assert.assertTrue;
+
+import java.util.List;
+
+import org.apache.bigtop.datagenerators.samplers.SeedFactory;
+import org.apache.bigtop.datagenerators.samplers.samplers.BoundedMultiModalGaussianSampler;
+import org.apache.bigtop.datagenerators.samplers.samplers.Sampler;
+import org.apache.commons.lang3.tuple.Pair;
+import org.junit.Test;
+
+import com.google.common.collect.Lists;
+
+public class TestBoundedMultiModalGaussianSampler
+{
+
+	@Test
+	public void testSample() throws Exception
+	{
+		double upperbound = 10.0;
+		double lowerbound = 1.0;
+
+		List<Pair<Double, Double>> distributions = Lists.newArrayList(Pair.of(2.0,
2.0), Pair.of(7.5, 2.0));
+
+		SeedFactory seedFactory = new SeedFactory(1234);
+
+		Sampler<Double> sampler = new BoundedMultiModalGaussianSampler(distributions, lowerbound,
upperbound, seedFactory);
+
+		Double result = sampler.sample();
+
+		assertTrue(result >= lowerbound);
+		assertTrue(result <= upperbound);
+	}
+}

http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/samplers/TestExponentialSampler.java
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/samplers/TestExponentialSampler.java
b/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/samplers/TestExponentialSampler.java
new file mode 100644
index 0000000..b04015a
--- /dev/null
+++ b/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/samplers/TestExponentialSampler.java
@@ -0,0 +1,41 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.bigtop.datagenerators.samplers.samplers;
+
+import static org.junit.Assert.assertTrue;
+
+import org.apache.bigtop.datagenerators.samplers.SeedFactory;
+import org.apache.bigtop.datagenerators.samplers.samplers.ExponentialSampler;
+import org.apache.bigtop.datagenerators.samplers.samplers.Sampler;
+import org.junit.Test;
+
+public class TestExponentialSampler
+{
+
+	@Test
+	public void testSample() throws Exception
+	{
+		double lambda = 1.0 / 2.0;
+
+		SeedFactory seedFactory = new SeedFactory(1234);
+
+		Sampler<Double> sampler = new ExponentialSampler(lambda, seedFactory);
+
+		Double result = sampler.sample();
+
+		assertTrue(result >= 0.0);
+	}
+}

http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/samplers/TestGaussianSampler.java
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/samplers/TestGaussianSampler.java
b/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/samplers/TestGaussianSampler.java
new file mode 100644
index 0000000..9c816b5
--- /dev/null
+++ b/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/samplers/TestGaussianSampler.java
@@ -0,0 +1,43 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.bigtop.datagenerators.samplers.samplers;
+
+import static org.junit.Assert.assertTrue;
+
+import org.apache.bigtop.datagenerators.samplers.SeedFactory;
+import org.apache.bigtop.datagenerators.samplers.samplers.GaussianSampler;
+import org.apache.bigtop.datagenerators.samplers.samplers.Sampler;
+import org.junit.Test;
+
+public class TestGaussianSampler
+{
+
+	@Test
+	public void testSample() throws Exception
+	{
+		double mean = 2.0;
+		double var = 1.0;
+
+		SeedFactory seedFactory = new SeedFactory(1234);
+
+		Sampler<Double> sampler = new GaussianSampler(mean, var, seedFactory);
+
+		Double result = sampler.sample();
+
+		assertTrue(result >= -10);
+		assertTrue(result <= 10);
+	}
+}

http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/samplers/TestRouletteWheelSampler.java
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/samplers/TestRouletteWheelSampler.java
b/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/samplers/TestRouletteWheelSampler.java
new file mode 100644
index 0000000..0c4cc05
--- /dev/null
+++ b/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/samplers/TestRouletteWheelSampler.java
@@ -0,0 +1,71 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.bigtop.datagenerators.samplers.samplers;
+
+import static org.junit.Assert.assertThat;
+import static org.junit.matchers.JUnitMatchers.hasItem;
+
+import java.util.Map;
+
+import org.apache.bigtop.datagenerators.samplers.SeedFactory;
+import org.apache.bigtop.datagenerators.samplers.samplers.RouletteWheelSampler;
+import org.apache.bigtop.datagenerators.samplers.samplers.Sampler;
+import org.junit.Test;
+
+import com.google.common.collect.ImmutableMap;
+
+public class TestRouletteWheelSampler
+{
+
+	@Test
+	public void testSample() throws Exception
+	{
+		Map<String, Double> dataPoints = ImmutableMap.of(
+				"a", 0.25,
+				"b", 0.25,
+				"c", 0.25,
+				"d", 0.25
+				);
+
+		SeedFactory seedFactory = new SeedFactory(1234);
+
+		Sampler<String> sampler = new RouletteWheelSampler<String>(dataPoints, seedFactory);
+
+		String result = sampler.sample();
+
+		assertThat(dataPoints.keySet(), hasItem(result));
+	}
+
+	@Test
+	public void testSampleUnnormalized() throws Exception
+	{
+		Map<String, Double> dataPoints = ImmutableMap.of(
+				"a", 1.0,
+				"b", 1.0,
+				"c", 1.0,
+				"d", 1.0
+				);
+
+		SeedFactory seedFactory = new SeedFactory(1234);
+
+		Sampler<String> sampler = new RouletteWheelSampler<String>(dataPoints, seedFactory);
+
+		String result = sampler.sample();
+
+		assertThat(dataPoints.keySet(), hasItem(result));
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/samplers/TestSequenceSampler.java
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/samplers/TestSequenceSampler.java
b/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/samplers/TestSequenceSampler.java
new file mode 100644
index 0000000..84e9ab8
--- /dev/null
+++ b/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/samplers/TestSequenceSampler.java
@@ -0,0 +1,38 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.bigtop.datagenerators.samplers.samplers;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.bigtop.datagenerators.samplers.samplers.Sampler;
+import org.apache.bigtop.datagenerators.samplers.samplers.SequenceSampler;
+import org.junit.Test;
+
+public class TestSequenceSampler
+{
+
+	@Test
+	public void testSample() throws Exception
+	{
+		Sampler<Integer> sampler = new SequenceSampler(0, 10, 1);
+
+		for(int i = 0; i < 10; i++)
+		{
+			Integer value = sampler.sample();
+			assertEquals( (int) value, i);
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/bigtop/blob/15af83eb/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/samplers/TestUniformIntSampler.java
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/samplers/TestUniformIntSampler.java
b/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/samplers/TestUniformIntSampler.java
new file mode 100644
index 0000000..6ab51b8
--- /dev/null
+++ b/bigtop-data-generators/bigtop-samplers/src/test/java/org/apache/bigtop/datagenerators/samplers/samplers/TestUniformIntSampler.java
@@ -0,0 +1,60 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.bigtop.datagenerators.samplers.samplers;
+
+import static org.junit.Assert.assertTrue;
+
+import org.apache.bigtop.datagenerators.samplers.SeedFactory;
+import org.apache.bigtop.datagenerators.samplers.samplers.Sampler;
+import org.apache.bigtop.datagenerators.samplers.samplers.UniformIntSampler;
+import org.junit.Test;
+
+public class TestUniformIntSampler
+{
+
+	@Test
+	public void testSample() throws Exception
+	{
+		int upperbound = 10;
+		int lowerbound = 1;
+
+		SeedFactory seedFactory = new SeedFactory(1234);
+
+		Sampler<Integer> sampler = new UniformIntSampler(lowerbound, upperbound, seedFactory);
+
+		Integer result = sampler.sample();
+
+		assertTrue(result >= lowerbound);
+		assertTrue(result <= upperbound);
+	}
+
+	@Test
+	public void testSampleInclusive() throws Exception
+	{
+		int upperbound = 2;
+		int lowerbound = 1;
+
+		SeedFactory seedFactory = new SeedFactory(1234);
+
+		Sampler<Integer> sampler = new UniformIntSampler(lowerbound, upperbound, seedFactory);
+
+		Integer result = sampler.sample();
+
+		assertTrue(result >= lowerbound);
+		assertTrue(result <= upperbound);
+	}
+
+}


Mime
View raw message