com.datatorrent.lib.util.TestUtils.java Source code

Java tutorial

Introduction

Here is the source code for com.datatorrent.lib.util.TestUtils.java

Source

/**
 * 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.lib.util;

import java.io.File;
import java.util.List;

import org.junit.rules.TestWatcher;
import org.junit.runner.Description;

import org.apache.apex.malhar.lib.utils.serde.BufferSlice;
import org.apache.commons.io.FileUtils;

import com.google.common.base.Preconditions;

import com.datatorrent.api.DefaultPartition;
import com.datatorrent.api.Operator;
import com.datatorrent.api.Operator.OutputPort;
import com.datatorrent.api.Sink;
import com.datatorrent.api.Stats;
import com.datatorrent.api.StatsListener;
import com.datatorrent.netlet.util.Slice;

public class TestUtils {
    public static byte[] getByte(int val) {
        Preconditions.checkArgument(val <= Byte.MAX_VALUE);
        return new byte[] { (byte) val };
    }

    public static byte[] getBytes(int val) {
        byte[] bytes = new byte[4];
        bytes[0] = (byte) (val & 0xFF);
        bytes[1] = (byte) ((val >> 8) & 0xFF);
        bytes[2] = (byte) ((val >> 16) & 0xFF);
        bytes[3] = (byte) ((val >> 24) & 0xFF);

        return bytes;
    }

    public static Slice getSlice(int val) {
        return new BufferSlice(getBytes(val));
    }

    public static class TestInfo extends TestWatcher {
        public org.junit.runner.Description desc;

        public String getDir() {
            String methodName = desc.getMethodName();
            String className = desc.getClassName();
            return "target/" + className + "/" + methodName;
        }

        @Override
        protected void starting(org.junit.runner.Description description) {
            this.desc = description;
        }
    }

    public static void deleteTargetTestClassFolder(Description description) {
        FileUtils.deleteQuietly(new File("target/" + description.getClassName()));
    }

    @SuppressWarnings({ "unchecked", "rawtypes" })
    public static <S extends Sink, T> S setSink(OutputPort<T> port, S sink) {
        port.setSink(sink);
        return sink;
    }

    /**
     * A mock batched operator stats used for testing stats listener and partitioner.
     */
    public static class MockBatchedOperatorStats implements StatsListener.BatchedOperatorStats {

        final int operatorId;
        public List<Stats.OperatorStats> operatorStats;
        public long latency;

        public MockBatchedOperatorStats(int operatorId) {
            this.operatorId = operatorId;
        }

        @Override
        public List<Stats.OperatorStats> getLastWindowedStats() {
            return operatorStats;
        }

        @Override
        public int getOperatorId() {
            return operatorId;
        }

        @Override
        public long getCurrentWindowId() {
            return 0;
        }

        @Override
        public long getTuplesProcessedPSMA() {
            return 0;
        }

        @Override
        public long getTuplesEmittedPSMA() {
            return 0;
        }

        @Override
        public double getCpuPercentageMA() {
            return 0;
        }

        @Override
        public long getLatencyMA() {
            return latency;
        }

        @Override
        public List<StatsListener.OperatorResponse> getOperatorResponse() {
            return null;
        }
    }

    /**
     * A mock {@link DefaultPartition}
     *
     * @param <T> operator type
     */
    public static class MockPartition<T extends Operator> extends DefaultPartition<T> {

        public MockPartition(DefaultPartition<T> defaultPartition, MockBatchedOperatorStats stats) {
            super(defaultPartition.getPartitionedInstance(), defaultPartition.getPartitionKeys(),
                    defaultPartition.getLoad(), stats);
        }
    }

}