/*
* Copyright 2017 StreamSets Inc.
*
* Licensed under 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.streamsets.pipeline.lib.parser.net;
import com.google.common.primitives.Bytes;
import com.streamsets.testing.RandomTestUtils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public abstract class NetTestUtils {
public static List<List<Byte>> getRandomByteSlices(byte[] bytes) {
List<Byte> byteList = Bytes.asList(bytes);
int numSlices = RandomTestUtils.nextInt(2, 10);
List<Integer> sliceIndexes = new ArrayList<>();
for (int i=1; i<=numSlices; i++) {
sliceIndexes.add(RandomTestUtils.nextInt(0, bytes.length));
}
Collections.sort(sliceIndexes);
List<List<Byte>> slices = new LinkedList<>();
int byteInd = 0;
for (int sliceIndex : sliceIndexes) {
// System.out.println(String.format("Slice from %d through %d", byteInd, sliceIndex));
slices.add(byteList.subList(byteInd, sliceIndex));
byteInd = sliceIndex;
}
// System.out.println(String.format("Slice from %d through %d", byteInd, byteList.size()));
slices.add(byteList.subList(byteInd, byteList.size()));
return slices;
}
}