/* * 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 org.apache.hadoop.chukwa.util; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.hadoop.chukwa.*; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.SequenceFile; import org.apache.hadoop.io.Text; import junit.framework.TestCase; import static org.apache.hadoop.chukwa.util.ConstRateValidator.ByteRange; import static org.apache.hadoop.chukwa.util.ConstRateValidator.ValidatorSM; import static org.apache.hadoop.chukwa.util.TempFileUtil.writeASinkFile; public class TestCRValidator extends TestCase{ public void testCRchunks() { ConstRateAdaptor adaptor = new ConstRateAdaptor(); adaptor.parseArgs("500 200 "); adaptor.test_init("testdata"); Chunk c = adaptor.nextChunk(100); assertTrue(ConstRateAdaptor.checkChunk(c)); c = adaptor.nextChunk(102); assertTrue(ConstRateAdaptor.checkChunk(c)); } public void testBasicSM() throws Exception { ValidatorSM sm = new ValidatorSM(); byte[] dat = "test".getBytes(); ChunkImpl c = new ChunkImpl("Data", "aname", dat.length, dat, null); ByteRange b = new ByteRange(c); assertEquals(4, b.len); assertEquals(0, b.start); String t = sm.advanceSM(b); assertNull(t); if(t != null) System.out.println(t); dat = "ing".getBytes(); c = new ChunkImpl("Data", "aname", dat.length+4, dat, null); b = new ByteRange(c); assertEquals(4, b.start); t = sm.advanceSM(b); assertNull(t); if(t != null) System.out.println(t); b = new ByteRange(new ChunkImpl("Data", "aname", 12, "more".getBytes(), null)); t= sm.advanceSM(b); System.out.println(t); } public void testSlurping() throws Exception { int NUM_CHUNKS = 10; Configuration conf = new Configuration(); FileSystem localfs = FileSystem.getLocal(conf); String baseDir = System.getProperty("test.build.data", "/tmp"); Path tmpFile = new Path(baseDir+"/tmpSeqFile.seq"); writeASinkFile(conf, localfs, tmpFile, NUM_CHUNKS); ValidatorSM sm = new ValidatorSM(); try { SequenceFile.Reader reader = new SequenceFile.Reader(localfs, tmpFile, conf); ChukwaArchiveKey key = new ChukwaArchiveKey(); ChunkImpl chunk = ChunkImpl.getBlankChunk(); while (reader.next(key, chunk)) { String s = sm.advanceSM(new ByteRange(chunk)); assertNull(s); } reader.close(); assertEquals(NUM_CHUNKS, sm.chunks); localfs.delete(tmpFile); } catch(IOException e) { e.printStackTrace(); } } }