[
https://issues.apache.org/jira/browse/APEXCORE-448?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15406292#comment-15406292
]
ASF GitHub Bot commented on APEXCORE-448:
-----------------------------------------
Github user chandnisingh commented on a diff in the pull request:
https://github.com/apache/apex-core/pull/364#discussion_r73382866
--- Diff:
engine/src/test/java/com/datatorrent/stram/engine/OperatorContextTest.java ---
@@ -0,0 +1,99 @@
+/**
+ * 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 com.datatorrent.stram.engine;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import org.apache.hadoop.conf.Configuration;
+
+import com.google.common.base.Preconditions;
+
+import com.datatorrent.api.AutoMetric;
+import com.datatorrent.api.Context;
+import com.datatorrent.api.DAG;
+import com.datatorrent.api.DefaultOutputPort;
+import com.datatorrent.api.InputOperator;
+import com.datatorrent.api.LocalMode;
+import com.datatorrent.api.StreamingApplication;
+import com.datatorrent.common.util.BaseOperator;
+
+public class OperatorContextTest
+{
+
+ @Test
+ public void testInjectionOfOperatorName() throws Exception
+ {
+ final LocalMode lma = LocalMode.newInstance();
+ final CountDownLatch latch = new CountDownLatch(1);
+ StreamingApplication testApp = new StreamingApplication()
+ {
+ @Override
+ public void populateDAG(DAG dag, Configuration conf)
+ {
+ MockInputOperator input = dag.addOperator("input", new
MockInputOperator());
+ input.countDownLatch = latch;
+ GenericNodeTest.GenericOperator output = dag.addOperator("output",
new GenericNodeTest.GenericOperator());
+
+ dag.addStream("stream", input.output, output.ip1);
+ }
+ };
+
+ lma.prepareDAG(testApp, new Configuration());
+ LocalMode.Controller lc = lma.getController();
+ lc.runAsync();
+ latch.await(2, TimeUnit.SECONDS);
+ lc.shutdown();
+ }
+
+ private static class MockInputOperator extends BaseOperator implements
InputOperator, AutoMetric.Aggregator
+ {
+ private transient CountDownLatch countDownLatch;
+
+ @AutoMetric
+ String operatorName;
+
+ public final transient DefaultOutputPort<String> output = new
DefaultOutputPort<>();
+
+ @Override
+ public void setup(Context.OperatorContext context)
+ {
+ operatorName = Preconditions.checkNotNull(context.getName(),
"operator name");
--- End diff --
This guarantees that setup is called and operator name has been verified,
before the test could finish. The app runs here asynchronously and this test
waits for expected results with a timeout.
I can run the app synchronously with a timeout but there is still a chance
that it will just deploy the application and the setup on the operator is not
triggered yet but the test completes.
> Make operator name available in OperatorContext
> -----------------------------------------------
>
> Key: APEXCORE-448
> URL: https://issues.apache.org/jira/browse/APEXCORE-448
> Project: Apache Apex Core
> Issue Type: Improvement
> Reporter: Chandni Singh
> Assignee: Chandni Singh
>
> Need name of the logical operator in the OperatorContext which can be used by
> WindowDataManager to create a unique path per logical operator .
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)