You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@apex.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2016/08/01 00:48:20 UTC

[jira] [Commented] (APEXCORE-448) Make operator name available in OperatorContext

    [ https://issues.apache.org/jira/browse/APEXCORE-448?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15401412#comment-15401412 ] 

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_r72914815
  
    --- Diff: engine/src/test/java/com/datatorrent/stram/engine/OperatorContextTest.java ---
    @@ -0,0 +1,98 @@
    +/**
    + * 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 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();
    +    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.getOperatorName(), "operator name");
    +    }
    +
    +    @Override
    +    public void emitTuples()
    +    {
    +    }
    +
    +    @Override
    +    public Map<String, Object> aggregate(long windowId, Collection<AutoMetric.PhysicalMetricsContext> physicalMetrics)
    +    {
    +      String name = (String)physicalMetrics.iterator().next().getMetrics().get("operatorName");
    +      Assert.assertEquals("operator name", "input", name);
    --- End diff --
    
    Right now the test will hang if assertion fails so I will fix it. However will use the latch because the test needs to wait for sometime until the value is set. With just a variable the number of lines to do that increases.


> 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)