Java tutorial
/** * 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); } } }