You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by jo...@apache.org on 2008/10/23 11:36:45 UTC

svn commit: r707328 - in /hadoop/core/trunk: ./ src/contrib/chukwa/ src/contrib/chukwa/conf/ src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/ src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/datacollection/agent/ src/contrib/chukwa/src/java/or...

Author: johan
Date: Thu Oct 23 02:36:44 2008
New Revision: 707328

URL: http://svn.apache.org/viewvc?rev=707328&view=rev
Log:
HADOOP-4431. Add versionning/tags to Chukwa Chunk. 
(Jerome Boulon via Johan)

Added:
    hadoop/core/trunk/src/contrib/chukwa/src/test/org/apache/hadoop/chukwa/ChunkImplTest.java
Modified:
    hadoop/core/trunk/CHANGES.txt
    hadoop/core/trunk/src/contrib/chukwa/build.xml
    hadoop/core/trunk/src/contrib/chukwa/conf/chukwa-agent-conf.xml
    hadoop/core/trunk/src/contrib/chukwa/conf/chukwa-agent-conf.xml.template
    hadoop/core/trunk/src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/Chunk.java
    hadoop/core/trunk/src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/ChunkImpl.java
    hadoop/core/trunk/src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/datacollection/agent/ChukwaAgent.java
    hadoop/core/trunk/src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/extraction/engine/datasource/database/DatabaseDS.java
    hadoop/core/trunk/src/contrib/chukwa/src/test/org/apache/hadoop/chukwa/TestChunkBuilder.java
    hadoop/core/trunk/src/contrib/chukwa/src/test/org/apache/hadoop/chukwa/inputtools/log4j/TestChukwaAppender.java

Modified: hadoop/core/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/CHANGES.txt?rev=707328&r1=707327&r2=707328&view=diff
==============================================================================
--- hadoop/core/trunk/CHANGES.txt (original)
+++ hadoop/core/trunk/CHANGES.txt Thu Oct 23 02:36:44 2008
@@ -45,6 +45,9 @@
 
     HADOOP-4284. Support filters that apply to all requests, or global filters,
     to HttpServer. (Kan Zhang via cdouglas)
+    
+    HADOOP-4431. Add versionning/tags to Chukwa Chunk. 
+    (Jerome Boulon via Johan)
 
   OPTIMIZATIONS
 

Modified: hadoop/core/trunk/src/contrib/chukwa/build.xml
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/contrib/chukwa/build.xml?rev=707328&r1=707327&r2=707328&view=diff
==============================================================================
--- hadoop/core/trunk/src/contrib/chukwa/build.xml (original)
+++ hadoop/core/trunk/src/contrib/chukwa/build.xml Thu Oct 23 02:36:44 2008
@@ -19,22 +19,48 @@
 
 <project name="chukwa" default="main">
 
+  <import file="../build-contrib.xml"/>
+
+
 	<property name="chukwaVersion" value="0.0.1"/>
 
 	<property name="lib.dir" value="${basedir}/lib"/>
 	<property name="src.dir" value="${basedir}/src"/>
+        <property name="build.classes" value="${build.dir}/classes"/>
 	<property name="conf.dir" value="${basedir}/conf"/>
 	<property name="docs.dir" value="${basedir}/docs"/>
 	<property name="tools.dir" value="${basedir}/tools"/>
 	<property name="dist.dir" value="${basedir}/dist"/>
 	<property name="opt.dir" value="${basedir}/opt"/>
         <property name="javac.debug" value="on"/>
-
-	<import file="../build-contrib.xml"/>
+        <property name="javac.version" value="1.6"/>
+       
+        <property name="test.src.dir" value="${basedir}/src/test"/>
+        <property name="test.lib.dir" value="${basedir}/src/test/lib"/>
+        <property name="test.build.dir" value="${build.dir}/test"/>
+        <property name="test.generated.dir" value="${test.build.dir}/src"/>
+        <property name="test.build.data" value="${test.build.dir}/data"/>
+        <property name="test.cache.data" value="${test.build.dir}/cache"/>
+        <property name="test.debug.data" value="${test.build.dir}/debug"/>
+        <property name="test.log.dir" value="${test.build.dir}/logs"/>
+        <property name="test.build.classes" value="${test.build.dir}/classes"/>
+        <property name="test.build.testjar" value="${test.build.dir}/testjar"/>
+        <property name="test.include" value="Test*"/>
+        <property name="test.classpath.id" value="test.classpath"/>
+        <property name="test.output" value="yes"/>
+        <property name="test.timeout" value="900000"/>
+        <property name="test.junit.output.format" value="plain"/>
+        <property name="test.junit.fork.mode" value="perTest" />
+        <property name="test.junit.printsummary" value="yes" />
+        <property name="test.junit.haltonfailure" value="yes" />
+        <property name="test.junit.maxmemory" value="256m" />
+ 
 
 	<target name="init">
 		<mkdir dir="${build.dir}"/>
+		<mkdir dir="${build.classes}"/>
 		<mkdir dir="${build.dir}/test"/>
+
 		<!-- 
     	<copy todir="${build.dir}">
             <fileset dir="${basedir}">
@@ -59,16 +85,49 @@
 	</target>
 
 	<target name="compile" depends="init" description="Compilation target">
-		<javac srcdir="src/java/org/apache/hadoop/chukwa" destdir="${build.dir}" excludes="**/ChukwaTTInstru.java" debug="${javac.debug}">
+		<javac srcdir="src/java/org/apache/hadoop/chukwa" destdir="${build.classes}" excludes="**/ChukwaTTInstru.java" debug="${javac.debug}">
 			<classpath refid="chukwaHadoopClasspath" />
 		</javac>
 	</target>
 
-	<target name="test" depends="init" description="Test target">
-		<javac srcdir="src/test/org/apache/hadoop/chukwa" destdir="${build.dir}" excludes="**/TestDemux.java" debug="${javac.debug}">
-			<classpath refid="chukwaHadoopClasspath" />
-		</javac>
-	</target>
+	<target name="compile-test" depends="init" description="Test target">
+	                      
+           <delete dir="${test.build.dir}"/>
+           <mkdir dir="${test.build.dir}"/>
+           <delete dir="${test.log.dir}"/>
+           <mkdir dir="${test.log.dir}"/>
+           <delete dir="${test.build.classes}"/>
+           <mkdir dir="${test.build.classes}"/>
+
+            <javac srcdir="${test.src.dir}/org/apache/hadoop/chukwa" destdir="${test.build.dir}/classes" excludes="**/TestDemux.java" debug="${javac.debug}">
+                 <classpath refid="chukwaTestClasspath" />
+            </javac>
+        </target>
+
+
+
+	<target name="test" depends="compile,compile-test,test-chunk" description="Chukwa Tests">
+	</target>
+
+	<target name="test-chunk" depends="compile,compile-test" description="Test chunk">
+               
+          <junit showoutput="yes"
+            fork="yes"
+            printsummary="${test.junit.printsummary}"
+            forkmode="${test.junit.fork.mode}"
+            maxmemory="${test.junit.maxmemory}"
+            dir="${test.build.dir}/classes/" timeout="${test.timeout}"
+            errorProperty="tests.failed" failureProperty="tests.failed">
+           <classpath refid="chukwaTestClasspath"/>
+           <sysproperty key="test.src.dir" value="${test.src.dir}"/>
+           <formatter type="${test.junit.output.format}" />
+           <batchtest todir="${test.build.dir}" >
+            <fileset dir="${test.src.dir}" includes="org/apache/hadoop/chukwa/*.java"/>
+           </batchtest>
+         </junit>
+         <fail if="tests.failed">Tests failed!</fail>
+
+        </target>
 
 	<target name="collector" depends="compile" description="Prepare collector.war">
 		<mkdir dir="${build.dir}/collector"/>
@@ -359,5 +418,18 @@
 			<exclude name="**/excluded/" />
 		</fileset>
 	</path>
+        <path id="chukwaTestClasspath">
+                <pathelement location="${hadoop.root}/build/classes"/>
+                <pathelement location="${hadoop.root}/build/contrib/chukwa/classes/"/>
+                <pathelement location="${hadoop.root}/build/contrib/chukwa/test/classes/"/>
+                <fileset dir="${lib.dir}">
+                        <include name="**/*.jar" />
+                        <exclude name="**/excluded/" />
+                </fileset>
+                <fileset dir="${hadoop.root}/lib">
+                        <include name="**/*.jar" />
+                        <exclude name="**/excluded/" />
+                </fileset>
+        </path>
 
 </project>

Modified: hadoop/core/trunk/src/contrib/chukwa/conf/chukwa-agent-conf.xml
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/contrib/chukwa/conf/chukwa-agent-conf.xml?rev=707328&r1=707327&r2=707328&view=diff
==============================================================================
--- hadoop/core/trunk/src/contrib/chukwa/conf/chukwa-agent-conf.xml (original)
+++ hadoop/core/trunk/src/contrib/chukwa/conf/chukwa-agent-conf.xml Thu Oct 23 02:36:44 2008
@@ -17,4 +17,11 @@
     <description>The hostname of the agent on this node. Usually localhost, this is used by the chukwa instrumentation agent-control interface library</description>
   </property>
 
+  <property>
+    <name>chukwaAgent.tags</name>
+    <value>cluster="demo"</value>
+    <description>The cluster's name for this agent</description>
+  </property>
+
+
 </configuration>

Modified: hadoop/core/trunk/src/contrib/chukwa/conf/chukwa-agent-conf.xml.template
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/contrib/chukwa/conf/chukwa-agent-conf.xml.template?rev=707328&r1=707327&r2=707328&view=diff
==============================================================================
--- hadoop/core/trunk/src/contrib/chukwa/conf/chukwa-agent-conf.xml.template (original)
+++ hadoop/core/trunk/src/contrib/chukwa/conf/chukwa-agent-conf.xml.template Thu Oct 23 02:36:44 2008
@@ -18,6 +18,12 @@
   </property>
 
   <property>
+    <name>chukwaAgent.tags</name>
+    <value>cluster="demo"</value>
+    <description>The cluster's name for this agent</description>
+  </property>
+
+  <property>
     <name>chukwaAgent.checkpoint.name</name>
     <value>chukwa_agent_checkpoint</value>
     <description>the prefix to to prepend to the agent's checkpoint file(s)</description>

Modified: hadoop/core/trunk/src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/Chunk.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/Chunk.java?rev=707328&r1=707327&r2=707328&view=diff
==============================================================================
--- hadoop/core/trunk/src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/Chunk.java (original)
+++ hadoop/core/trunk/src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/Chunk.java Thu Oct 23 02:36:44 2008
@@ -92,5 +92,17 @@
    */
   public int getSerializedSizeEstimate();
   
+/**
+ * @return tags from this chunk.
+ * 
+ */
+  public String getTags();  
+  
+  /**
+   * Set tags to this chunk.
+   * 
+   */
+    public void setTags(String tags);  
+  
   public void write(DataOutput data) throws IOException;
 }

Modified: hadoop/core/trunk/src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/ChunkImpl.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/ChunkImpl.java?rev=707328&r1=707327&r2=707328&view=diff
==============================================================================
--- hadoop/core/trunk/src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/ChunkImpl.java (original)
+++ hadoop/core/trunk/src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/ChunkImpl.java Thu Oct 23 02:36:44 2008
@@ -23,25 +23,28 @@
 import java.io.IOException;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
-import java.util.ArrayList;
 
 import org.apache.hadoop.chukwa.datacollection.adaptor.Adaptor;
+import org.apache.hadoop.chukwa.datacollection.agent.ChukwaAgent;
 
 public class ChunkImpl implements org.apache.hadoop.io.Writable, Chunk 
 {
-  
+  public static int PROTOCOL_VERSION=1;
+	
   private String source = "";
   private String application = "";
   private String dataType = "";
+  private String tags = "";
   private byte[] data = null;
   private int[] recordEndOffsets;
+  private int protocolVersion=1;
+  private long seqID;
   
   private String debuggingInfo="";
-  
   private transient Adaptor initiator;
-  long seqID;
   
   ChunkImpl() {
+    this.tags = ChukwaAgent.getTags();
   }
   
   public static ChunkImpl getBlankChunk() {
@@ -50,11 +53,12 @@
   
   public ChunkImpl(String dataType, String streamName, long seq, byte[] data, Adaptor source) {
     this.seqID = seq;
+    this.source = localHostAddr;
+    this.tags = ChukwaAgent.getTags();
     this.application = streamName;
     this.dataType = dataType;
     this.data = data;
     this.initiator = source;
-    this.source = localHostAddr;
   }
   
   /**
@@ -109,6 +113,13 @@
     seqID=l;
   }
   
+  public int getProtocolVersion() {
+	  return protocolVersion;
+  }
+  
+  public void setProtocolVersion(int pv) {
+	  this.protocolVersion = pv;
+  }
   public String getApplication(){
     return application;
   }
@@ -149,12 +160,30 @@
     dataType = t;
   }
   
+  @Override
+  public void setTags(String tags)
+  {
+  	this.tags = tags;
+  }
+  
+/**
+ * @see org.apache.hadoop.chukwa.Chunk#getTags()
+ */
+  public String getTags() {
+    return tags;
+  }
+  
   /**
    * @see org.apache.hadoop.io.Writable#readFields(java.io.DataInput)
    */
   public void readFields(DataInput in) throws IOException {
+	setProtocolVersion(in.readInt());
+	if(protocolVersion!=PROTOCOL_VERSION) {
+		throw new IOException("Protocol version mismatched, drop data.  source version: "+protocolVersion+", collector version:"+PROTOCOL_VERSION);
+	}
     setSeqID(in.readLong());
     setSource(in.readUTF());
+    tags =  in.readUTF();    //no public set method here
     setApplication(in.readUTF());
     setDataType(in.readUTF());
     setDebugInfo(in.readUTF());
@@ -167,12 +196,15 @@
     in.readFully(data);
     
   }
+
   /**
    * @see org.apache.hadoop.io.Writable#write(java.io.DataOutput)
    */
   public void write(DataOutput out) throws IOException {
+	out.writeInt(PROTOCOL_VERSION);
     out.writeLong(seqID);
     out.writeUTF(source);
+    out.writeUTF(tags);
     out.writeUTF(application);
     out.writeUTF(dataType);
     out.writeUTF(debuggingInfo);

Modified: hadoop/core/trunk/src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/datacollection/agent/ChukwaAgent.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/datacollection/agent/ChukwaAgent.java?rev=707328&r1=707327&r2=707328&view=diff
==============================================================================
--- hadoop/core/trunk/src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/datacollection/agent/ChukwaAgent.java (original)
+++ hadoop/core/trunk/src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/datacollection/agent/ChukwaAgent.java Thu Oct 23 02:36:44 2008
@@ -40,7 +40,8 @@
 {
   boolean DO_CHECKPOINT_RESTORE = false;
   boolean WRITE_CHECKPOINTS = false;
-
+ 
+  static String tags = "";
   static Logger log = Logger.getLogger(ChukwaAgent.class);
 
   //doesn't need an equals(), comparator, etc
@@ -444,6 +445,8 @@
     }
   //  String initialAdaptorsStr = conf.get("initial_adaptors_file");
     
+    tags = conf.get("chukwaAgent.tags", "cluster=\"unknown\"");
+    
     initialAdaptors = new File(chukwaHome + "conf/initial_adaptors");
   }
   
@@ -495,4 +498,8 @@
     return controlSock;
   }
 
+  public static String getTags() {
+	    return tags;
+  }
+
 }

Modified: hadoop/core/trunk/src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/extraction/engine/datasource/database/DatabaseDS.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/extraction/engine/datasource/database/DatabaseDS.java?rev=707328&r1=707327&r2=707328&view=diff
==============================================================================
--- hadoop/core/trunk/src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/extraction/engine/datasource/database/DatabaseDS.java (original)
+++ hadoop/core/trunk/src/contrib/chukwa/src/java/org/apache/hadoop/chukwa/extraction/engine/datasource/database/DatabaseDS.java Thu Oct 23 02:36:44 2008
@@ -51,7 +51,7 @@
 		
 		 if(cluster==null)
 		 {
-			   cluster="mithrilgold";
+			   cluster="demo";
 		  }
 		
 		if (dataSource.equalsIgnoreCase("MRJob"))

Added: hadoop/core/trunk/src/contrib/chukwa/src/test/org/apache/hadoop/chukwa/ChunkImplTest.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/contrib/chukwa/src/test/org/apache/hadoop/chukwa/ChunkImplTest.java?rev=707328&view=auto
==============================================================================
--- hadoop/core/trunk/src/contrib/chukwa/src/test/org/apache/hadoop/chukwa/ChunkImplTest.java (added)
+++ hadoop/core/trunk/src/contrib/chukwa/src/test/org/apache/hadoop/chukwa/ChunkImplTest.java Thu Oct 23 02:36:44 2008
@@ -0,0 +1,58 @@
+package org.apache.hadoop.chukwa;
+
+import java.io.IOException;
+
+import junit.framework.TestCase;
+
+import org.apache.hadoop.io.DataInputBuffer;
+import org.apache.hadoop.io.DataOutputBuffer;
+
+public class ChunkImplTest extends TestCase
+{
+	public void testVersion()
+	{
+		ChunkBuilder cb = new ChunkBuilder();
+		cb.addRecord("foo".getBytes());
+		cb.addRecord("bar".getBytes());
+		cb.addRecord("baz".getBytes());
+		Chunk c = cb.getChunk();
+		DataOutputBuffer ob = new DataOutputBuffer(c.getSerializedSizeEstimate());
+		try
+		{
+			c.write(ob);
+			DataInputBuffer ib = new DataInputBuffer();
+			ib.reset(ob.getData(), c.getSerializedSizeEstimate());
+			int version = ib.readInt();
+			assertEquals(version,ChunkImpl.PROTOCOL_VERSION);
+		} 
+		catch (IOException e)
+		{
+			e.printStackTrace();
+			fail("Should nor raise any exception"); 
+		}
+	}
+
+	public void testWrongVersion()
+	{
+		ChunkBuilder cb = new ChunkBuilder();
+		cb.addRecord("foo".getBytes());
+		cb.addRecord("bar".getBytes());
+		cb.addRecord("baz".getBytes());
+		Chunk c = cb.getChunk();
+		DataOutputBuffer ob = new DataOutputBuffer(c.getSerializedSizeEstimate());
+		try
+		{
+			c.write(ob);
+			DataInputBuffer ib = new DataInputBuffer();
+			ib.reset(ob.getData(), c.getSerializedSizeEstimate());
+			//change current chunkImpl version
+			ChunkImpl.PROTOCOL_VERSION = ChunkImpl.PROTOCOL_VERSION+1;
+			ChunkImpl.read(ib);
+			fail("Should have raised an IOexception"); 
+		} 
+		catch (IOException e)
+		{
+			// right behavior, do nothing
+		}
+	}
+}

Modified: hadoop/core/trunk/src/contrib/chukwa/src/test/org/apache/hadoop/chukwa/TestChunkBuilder.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/contrib/chukwa/src/test/org/apache/hadoop/chukwa/TestChunkBuilder.java?rev=707328&r1=707327&r2=707328&view=diff
==============================================================================
--- hadoop/core/trunk/src/contrib/chukwa/src/test/org/apache/hadoop/chukwa/TestChunkBuilder.java (original)
+++ hadoop/core/trunk/src/contrib/chukwa/src/test/org/apache/hadoop/chukwa/TestChunkBuilder.java Thu Oct 23 02:36:44 2008
@@ -35,5 +35,4 @@
     assertEquals(5, chunk.getRecordOffsets()[1]);
     assertEquals(8, chunk.getRecordOffsets()[2]);
   }
-
 }

Modified: hadoop/core/trunk/src/contrib/chukwa/src/test/org/apache/hadoop/chukwa/inputtools/log4j/TestChukwaAppender.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/contrib/chukwa/src/test/org/apache/hadoop/chukwa/inputtools/log4j/TestChukwaAppender.java?rev=707328&r1=707327&r2=707328&view=diff
==============================================================================
--- hadoop/core/trunk/src/contrib/chukwa/src/test/org/apache/hadoop/chukwa/inputtools/log4j/TestChukwaAppender.java (original)
+++ hadoop/core/trunk/src/contrib/chukwa/src/test/org/apache/hadoop/chukwa/inputtools/log4j/TestChukwaAppender.java Thu Oct 23 02:36:44 2008
@@ -29,7 +29,8 @@
 
 public class TestChukwaAppender extends TestCase {
   
-  public void testChukwaAppender() {
+  @SuppressWarnings("deprecation")
+public void testChukwaAppender() {
     try {
     
     ChukwaAgent agent = new ChukwaAgent();