HTRACE-363: Add tests for newScope with parent id (Nisala Mendis via cmccabe)
diff --git a/htrace-core4/src/test/java/org/apache/htrace/core/TestNewScopeWithParentID.java b/htrace-core4/src/test/java/org/apache/htrace/core/TestNewScopeWithParentID.java
new file mode 100644
index 0000000..50eda78
--- /dev/null
+++ b/htrace-core4/src/test/java/org/apache/htrace/core/TestNewScopeWithParentID.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.htrace.core;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.HashMap;
+
+public class TestNewScopeWithParentID {
+
+  @Test
+  public void testNewScopeWithParentID() throws Exception {
+
+    Tracer tracer = new Tracer.Builder().
+              name("testNewScopeWithParentID").
+              tracerPool(new TracerPool("testNewScopeWithParentID")).
+              conf(HTraceConfiguration.fromKeyValuePairs(
+                      "sampler.classes", "AlwaysSampler")).build();
+    TraceScope activeScope = tracer.newScope("CurrentActiveScope");
+    HashMap<Integer,SpanId> spanIdHashMap = new HashMap<>();
+    SpanId parentID = new SpanId(100L, 200L);
+    spanIdHashMap.put(activeScope.getSpanId().hashCode(),activeScope.getSpanId());
+    spanIdHashMap.put(parentID.hashCode(),parentID);
+    TraceScope childScope = tracer.
+              newScope("ChildScope", parentID);
+    Assert.assertNotNull(childScope);
+    Assert.assertEquals(childScope.getSpan().getParents().length, 2);
+    //parent on index 0
+    Assert.assertNotNull(spanIdHashMap.get(childScope.getSpan().getParents()[0].hashCode()));
+    Assert.assertEquals(childScope.getSpan().getParents()[0].getHigh(),
+            spanIdHashMap.get(childScope.getSpan().getParents()[0].hashCode()).getHigh());
+    Assert.assertEquals(childScope.getSpan().getParents()[0].getLow(),
+            spanIdHashMap.get(childScope.getSpan().getParents()[0].hashCode()).getLow());
+    //parent on index 1
+    Assert.assertNotNull(spanIdHashMap.get(childScope.getSpan().getParents()[1].hashCode()));
+    Assert.assertEquals(childScope.getSpan().getParents()[1].getHigh(),
+            spanIdHashMap.get(childScope.getSpan().getParents()[1].hashCode()).getHigh());
+    Assert.assertEquals(childScope.getSpan().getParents()[1].getLow(),
+            spanIdHashMap.get(childScope.getSpan().getParents()[1].hashCode()).getLow());
+    childScope.close();
+    activeScope.close();
+
+  }
+}