buildframework/helium/sf/java/metadata/tests/antunit/test_metadata.ant.xml
changeset 628 7c4a911dc066
parent 588 c7c26511138f
--- a/buildframework/helium/sf/java/metadata/tests/antunit/test_metadata.ant.xml	Wed Jun 16 16:51:40 2010 +0300
+++ b/buildframework/helium/sf/java/metadata/tests/antunit/test_metadata.ant.xml	Fri Aug 13 14:59:05 2010 +0300
@@ -23,62 +23,35 @@
 <project name="test-metadata" xmlns:au="antlib:org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
     <description>Helium antlib metadata tests.</description>
 
+    <dirname property="project.dir" file="${ant.file.test-metadata}" />
     <taskdef resource="com/nokia/helium/metadata/ant/antlib.xml" uri="http://www.nokia.com/helium" />
     <taskdef name="fmpp" classname="fmpp.tools.AntTask" onerror="report"/>
-
-    <target name="check-metadata">
-        <hlm:metadatarecord srcfile="${basedir}\data\gensis.txt" database="${basedir}\metadata_db">
-            <fileset dir="data" includes="gensis.txt"/>
-            <hlm:textlogparser>
-                <!-- Single set defined by csv file 
-                <hlm:metadatafilterset filterFile="${basedir}\data\common.csv"/>-->
-                <!-- Set defined by nested single filter and another nested set -->
-                <hlm:metadatafilterset>
-                    <hlm:metadatafilter priority="error" regex=".*Warning: Could not find file.*" description="Test pattern for missing file."/>
-                    <!--<hlm:metadatafilterset>
-                        <hlm:metadatafilter priority="warning" regex="File not found" description="Test pattern for missing file."/>
-                    </hlm:metadatafilterset>-->
-                </hlm:metadatafilterset>
-            </hlm:textlogparser>
-        </hlm:metadatarecord>
-        <!--<au:assertLogContains text="Successfully executed codescanner"/>
-        <au:assertLogContains text="Output format: xml,html"/>
-        <au:assertFileExists file="${codescanner.output.dir}/problemIndex.xml"/>-->
+    
+    <target name="setUp">
+        <echo>---=====================================---</echo>
+        <mkdir dir="${test.temp.dir}" />
+        <delete dir="${test.temp.dir}" />
+        <mkdir dir="${test.temp.dir}" />
     </target>
     
-    
-    <target name="render-scanlog">
-        <property name="build.logs.dir" value="${bmd.test.project.dir}/test_bmd" />
-        <fmpp sourceFile="${basedir}/../src/templates/readdata.xml.ftl"
-                      outputFile="${basedir}/readdata.xml">
-            <freemarkerLinks expandProperties="yes">
-                macro: ${basedir}/../src/templates
-            </freemarkerLinks>
-            <data>
-                templatedir: "${basedir}/src/templates"
-                template: "components_status.xml.ftl"
-                dbPath: "tests/metadata_db"
-                countOnly: "true"
-                tableName: "out"
-                queryString: "where priority='WARNING' or priority='error'"
-                limit: "500"
-                ant: antProperties()
-            </data>
-        </fmpp>
+    <target name="tearDown">
+        <delete dir="${test.temp.dir}" />
+        <echo>---=====================================---</echo>
     </target>
 
     <hlm:metadatafilterset id="metadata.regex.test">
-        <hlm:metadatafilter priority="ERROR" regex="^Error \d+: this is some serious error.*" description="Test pattern for testing metadataRegexTest condition."/>
+        <hlm:metadatafilter severity="ERROR" regex="^Error \d+: this is some serious error.*" description="Test pattern for testing metadataRegexTest condition."/>
     </hlm:metadatafilterset>
 
-    <target name="test-scanlog-metadata-regex-pass">
+    <target name="test-metadata-regex-pass">
         <au:assertTrue>
             <hlm:metadataRegexTest severity="ERROR" string="Error 193: this is some serious error">
                 <hlm:metadatafilterset refid="metadata.regex.test"/>
             </hlm:metadataRegexTest>
         </au:assertTrue>
     </target>
-    <target name="test-scanlog-metadata-regex-fail-1">
+
+    <target name="test-metadata-regex-fail-string-missing">
         <au:expectfailure>
             <fail>
                 <condition>
@@ -89,7 +62,8 @@
             </fail>
         </au:expectfailure>
     </target>
-    <target name="test-scanlog-metadata-regex-fail-2">
+    
+    <target name="test-metadata-regex-fail-severity-missing">
         <au:expectfailure>
             <fail>
                 <condition>
@@ -101,45 +75,211 @@
         </au:expectfailure>
     </target>
     
-    
-    <hlm:metadatafilterset id="filterset.imaker">
-        <metadatafilter priority="error" regex="^\s*Total duration:\s+\d+:\d+\s+Status:\s+FAILED" description="" />
-        <metadatafilter priority="error" regex="^.+- DOESN'T EXIST" description="" />
-    </hlm:metadatafilterset>
-    <hlm:metadatafilterset id="filterset.abld">
-        <metadatafilter priority="error" regex="^ERROR:" description="" />
-        <metadatafilter priority="warning" regex="^WARNING:.*" description="" />
-    </hlm:metadatafilterset>
-    
-    <target name="test-rombuild-metadata">
-        <hlm:metadatarecord database="${basedir}\metadata_db">
+    <target name="test-same-log-several-times">
+        <hlm:metadatarecord database="${test.temp.dir}/metadata_db">
             <hlm:imakermetadatainput>
-                <fileset casesensitive="false" file="${basedir}/../data/build_roms_sample.log" />
-                <fileset casesensitive="false" file="${basedir}/../data/sample_abld.log" />
-                <metadatafilterset refid="filterset.imaker" />
+                <fileset casesensitive="false" file="../data/sample_abld.log" />
+                <hlm:metadatafilterset>
+                    <metadatafilter severity="error" regex="^ERROR:" description="" />
+                    <metadatafilter severity="warning" regex="^WARNING:.*" description="" />
+                </hlm:metadatafilterset>
+            </hlm:imakermetadatainput>
+        </hlm:metadatarecord>
+        <hlm:metadatarecord database="${test.temp.dir}/metadata_db">
+            <hlm:imakermetadatainput>
+                <fileset casesensitive="false" file="../data/sample_abld.log" />
+                <hlm:metadatafilterset>
+                    <metadatafilter severity="error" regex="^ERROR:" description="" />
+                    <metadatafilter severity="warning" regex="^WARNING:.*" description="" />
+                </hlm:metadatafilterset>
             </hlm:imakermetadatainput>
         </hlm:metadatarecord>
-        <hlm:metadatarecord database="${basedir}\metadata_db">
-            <hlm:imakermetadatainput>
-                <fileset casesensitive="false" file="${basedir}/../data/sample_abld.log" />
-                <metadatafilterset refid="filterset.abld" />
-            </hlm:imakermetadatainput>
+    </target>
+    
+    <scriptdef language="jython" name="createLog">
+        <attribute name="file" />
+        <attribute name="length" />
+        <![CDATA[
+f = open(attributes.get('file'), 'w+')
+length = attributes.get('length')
+if length:
+    length = int(length)
+else:
+    length = 10000
+try:
+    while length > 0:
+        f.write("ERROR: error %d\n" % length)
+        length = length - 1
+finally:
+    f.close()
+        ]]>
+    </scriptdef>
+    
+    <!-- Let's try to get 4 logs pushed in parallel into the database. -->
+    <target name="test-parallel-database-creation">
+        <createLog file="${test.temp.dir}/log1.log" length="10000"/>
+        <copy file="${test.temp.dir}/log1.log" tofile="${test.temp.dir}/log2.log" />
+        <copy file="${test.temp.dir}/log1.log" tofile="${test.temp.dir}/log3.log" />
+        <copy file="${test.temp.dir}/log1.log" tofile="${test.temp.dir}/log4.log" />
+        
+        <parallel>
+            <hlm:metadatarecord database="${test.temp.dir}/metadata_db">
+                <hlm:textmetadatainput>
+                    <fileset casesensitive="false" file="${test.temp.dir}/log1.log" />
+                    <hlm:metadatafilterset>
+                        <metadatafilter severity="error" regex="^ERROR:.*" description="" />
+                    </hlm:metadatafilterset>
+                </hlm:textmetadatainput>
+            </hlm:metadatarecord>
+            <hlm:metadatarecord database="${test.temp.dir}/metadata_db">
+                <hlm:textmetadatainput>
+                    <fileset casesensitive="false" file="${test.temp.dir}/log2.log" />
+                    <hlm:metadatafilterset>
+                        <metadatafilter severity="error" regex="^ERROR:.*" description="" />
+                    </hlm:metadatafilterset>
+                </hlm:textmetadatainput>
+            </hlm:metadatarecord>
+            <hlm:metadatarecord database="${test.temp.dir}/metadata_db">
+                <hlm:textmetadatainput>
+                    <fileset casesensitive="false" file="${test.temp.dir}/log3.log" />
+                    <hlm:metadatafilterset>
+                        <metadatafilter severity="error" regex="^ERROR:.*" description="" />
+                    </hlm:metadatafilterset>
+                </hlm:textmetadatainput>
+            </hlm:metadatarecord>
+            <hlm:metadatarecord database="${test.temp.dir}/metadata_db">
+                <hlm:textmetadatainput>
+                    <fileset casesensitive="false" file="${test.temp.dir}/log4.log" />
+                    <hlm:metadatafilterset>
+                        <metadatafilter severity="error" regex="^ERROR:.*" description="" />
+                    </hlm:metadatafilterset>
+                </hlm:textmetadatainput>
+            </hlm:metadatarecord>
+        </parallel>
+        <hlm:metadataCountSeverity severity="error" database="${test.temp.dir}/metadata_db" property="errors">
+            <fileset dir="${test.temp.dir}" includes="log*.log" />
+        </hlm:metadataCountSeverity>
+        <echo>errors: ${errors}</echo>
+        <au:assertTrue>
+            <equals arg1="${errors}" arg2="40000" />
+        </au:assertTrue>
+    </target>
+    
+    <!-- Let's metadata delete. -->
+    <target name="test-metadatadelete">
+        <createLog file="${test.temp.dir}/log1.log" length="10"/>
+        <copy file="${test.temp.dir}/log1.log" tofile="${test.temp.dir}/log2.log" />
+        
+        <hlm:metadatarecord database="${test.temp.dir}/metadata_db">
+            <hlm:textmetadatainput>
+                <fileset dir="${test.temp.dir}" includes="log*.log" />
+                <hlm:metadatafilterset>
+                    <metadatafilter severity="error" regex="^ERROR:.*" description="" />
+                </hlm:metadatafilterset>
+            </hlm:textmetadatainput>
         </hlm:metadatarecord>
         
-        <fmpp sourceFile="${basedir}/../../../../../tools/common/templates/diamonds/build_roms_diamonds.xml.ftl"
-                     outputfile="build_roms_diamonds.xml">
-            <data expandProperties="yes">
-                dbPath: ${basedir}\metadata_db
-                ant: antProperties()
-            </data>
-        </fmpp>
+        <hlm:metadataCountSeverity severity="error" log="${test.temp.dir}/log1.log" 
+            database="${test.temp.dir}/metadata_db" property="errors.before" />        
+        <echo>errors.before: ${errors.before}</echo>
+        <hlm:metadatadelete database="${test.temp.dir}/metadata_db">
+            <fileset dir="${test.temp.dir}" includes="log1.log" />
+        </hlm:metadatadelete>
+        <hlm:metadataCountSeverity severity="error" log="${test.temp.dir}/log1.log" 
+            database="${test.temp.dir}/metadata_db" property="errors.after" />        
+        <echo>errors.after: ${errors.after}</echo>
+
+        <au:assertTrue>
+            <equals arg1="${errors.before}" arg2="10" />
+        </au:assertTrue>
+        <au:assertTrue>
+            <equals arg1="${errors.after}" arg2="0" />
+        </au:assertTrue>
+    </target>
+
+    
+    <!-- Test that error and warnings are counted properly by the hlm:metadataHasSeverity task -->
+    <target name="test-has-severity">
+        <hlm:metadatarecord database="${test.temp.dir}/metadata_db">
+            <hlm:textmetadatainput>
+                <fileset file="${project.dir}/../data/countseverity/text_has_severity.log" />
+                <hlm:metadatafilterset>
+                    <metadatafilter severity="error" regex="^ERROR:.*" description="" />
+                    <metadatafilter severity="warning" regex="^WARNING:.*" description="" />
+                </hlm:metadatafilterset>
+            </hlm:textmetadatainput>
+        </hlm:metadatarecord>
+        
+        <au:assertTrue message="Must found an error">
+            <hlm:metadataHasSeverity severity="error" log="${project.dir}/../data/countseverity/text_has_severity.log" database="${test.temp.dir}/metadata_db" />
+        </au:assertTrue>
+        <au:assertTrue message="Must found a warning">
+            <hlm:metadataHasSeverity severity="warning" log="${project.dir}/../data/countseverity/text_has_severity.log" database="${test.temp.dir}/metadata_db" />
+        </au:assertTrue>
         
-        <loadfile srcfile="build_roms_diamonds.xml" property="diamonds.output"/>
-        <au:assertMatches string="${diamonds.output}" pattern=".*?RM-XXX_010\.014_00\.01_79\.92_prd\.rofs3\.fpsx.*" singleline="true"/>
-        <delete file="build_roms_diamonds.xml"/>
-        <delete dir="${basedir}\metadata_db"/>
+        <au:assertTrue message="Must found an error">
+            <hlm:metadataHasSeverity severity="error" database="${test.temp.dir}/metadata_db">
+                <fileset file="${project.dir}/../data/countseverity/text_has_severity.log" />
+            </hlm:metadataHasSeverity>
+        </au:assertTrue>
+        <au:assertTrue message="Must found a warning">
+            <hlm:metadataHasSeverity severity="warning" database="${test.temp.dir}/metadata_db">
+                <fileset file="${project.dir}/../data/countseverity/text_has_severity.log" />
+            </hlm:metadataHasSeverity>
+        </au:assertTrue>
+    </target>
+        
+    <!-- Test that error and warnings are counted properly by the hlm:metadataHasSeverity task -->
+    <target name="test-has-severity-testing-parameters">
+        <hlm:metadatarecord database="${test.temp.dir}/metadata_db">
+            <hlm:textmetadatainput>
+                <fileset file="${project.dir}/../data/countseverity/text_has_severity.log" />
+                <hlm:metadatafilterset>
+                    <metadatafilter severity="error" regex="^ERROR:.*" description="" />
+                    <metadatafilter severity="error" regex="^WARNING:*" description="" />
+                </hlm:metadatafilterset>
+            </hlm:textmetadatainput>
+        </hlm:metadatarecord>
+        
+        <au:expectfailure expectedMessage="'log' attribute not defined.">
+            <condition property="test" value="whatever">
+                <hlm:metadataHasSeverity severity="error" database="${test.temp.dir}/metadata_db" />
+            </condition>
+        </au:expectfailure>
+        <au:expectfailure expectedMessage="'database' attribute not defined.">
+            <condition property="test" value="whatever">
+                <hlm:metadataHasSeverity severity="error" log="${project.dir}/../data/countseverity/text_has_severity.log" />
+            </condition>
+        </au:expectfailure>
+        <au:expectfailure expectedMessage="'severity' attribute is not defined.">
+            <condition property="test" value="whatever">
+                <hlm:metadataHasSeverity log="${project.dir}/../data/countseverity/text_has_severity.log" database="${test.temp.dir}/metadata_db" />
+            </condition>
+        </au:expectfailure>
     </target>
     
+	<!-- If the database is invalid, for example in the case of
+	     Derby only the directory exists, then implementation
+	     should remove it and create a valid database.
+	 -->
+    <target name="test-invalid-database">
+        <mkdir dir="${test.temp.dir}/metadata_db" />
+        <createLog file="${test.temp.dir}/log1.log" length="10"/>
+        <hlm:metadatarecord database="${test.temp.dir}/metadata_db">
+            <hlm:textmetadatainput>
+                <fileset casesensitive="false" file="${test.temp.dir}/log1.log" />
+                <hlm:metadatafilterset>
+                    <metadatafilter severity="error" regex="^ERROR:.*" description="" />
+                </hlm:metadatafilterset>
+            </hlm:textmetadatainput>
+        </hlm:metadatarecord>    	
+        <hlm:metadataCountSeverity severity="error" log="${test.temp.dir}/log1.log" 
+            database="${test.temp.dir}/metadata_db" property="errors" />        
+        <echo>errors: ${errors}</echo>
+        <au:assertTrue>
+            <equals arg1="${errors}" arg2="10" />
+        </au:assertTrue>
+    </target>
 </project>