Author: trygvis Date: Thu Apr 21 07:10:08 2005 New Revision: 164064 URL: http://svn.apache.org/viewcvs?rev=164064&view=rev Log: Fixing a issue with removing projects. o When persisting the changed file list the object has to be JDO persistable so the list now contains ScmFile objects instead of Strings. o Changed the build controller to add ScmFile objects instead of Strings. o Added removeProject() to the continuum Python module. o After the integration test has executed the tests on a project it removed them.
o Ignoring compiled Python files. Modified: maven/continuum/trunk/continuum-core-it/ (props changed) maven/continuum/trunk/continuum-core-it/continuum.py maven/continuum/trunk/continuum-core-it/it.py maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStore.java maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStoreTest.java maven/continuum/trunk/continuum-model/src/main/resources/continuum.mdo Propchange: maven/continuum/trunk/continuum-core-it/ ------------------------------------------------------------------------------ --- svn:ignore (original) +++ svn:ignore Thu Apr 21 07:10:08 2005 @@ -6,3 +6,4 @@ *.ipr *.iws *.iml +*.pyc Modified: maven/continuum/trunk/continuum-core-it/continuum.py URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core-it/continuum.py?rev=164064&r1=164063&r2=164064&view=diff ============================================================================== --- maven/continuum/trunk/continuum-core-it/continuum.py (original) +++ maven/continuum/trunk/continuum-core-it/continuum.py Thu Apr 21 07:10:08 2005 @@ -74,6 +74,9 @@ return result[ "projects" ] +def removeProject( projectId ): + checkResult( server.continuum.removeProject( projectId ) ) + def buildProject( projectId ): result = checkResult( server.continuum.buildProject( projectId ) ) Modified: maven/continuum/trunk/continuum-core-it/it.py URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core-it/it.py?rev=164064&r1=164063&r2=164064&view=diff ============================================================================== --- maven/continuum/trunk/continuum-core-it/it.py (original) +++ maven/continuum/trunk/continuum-core-it/it.py Thu Apr 21 07:10:08 2005 @@ -23,7 +23,7 @@ if( expected == actual ): return - + print print "##############################################" print "ASSERTION FAILURE!" @@ -110,6 +110,15 @@ assertEquals( "Standard output didn't contain the expected output.", expectedStandardOutput, buildResult.standardOutput ) assertEquals( "Standard error wasn't empty.", 0, len( buildResult.standardError ) ) +def removeProject( projectId ): + continuum.removeProject( projectId ) + + map = continuum.server.continuum.getProject( projectId ) + + if ( map[ "result" ] != "failure" ): + print map + fail( "Expected a failure when removing project." ) + def execute( workingDirectory, command ): cwd = os.getcwd() os.chdir( workingDirectory ) @@ -187,10 +196,10 @@ <nagEmailAddress>%(email)s</nagEmailAddress> </build> </project> -""" % { - "artifactId" : artifactId, - "scm" : scm, - "scmUrl" : makeScmUrl( scm, scmroot, artifactId ), +""" % { + "artifactId" : artifactId, + "scm" : scm, + "scmUrl" : makeScmUrl( scm, scmroot, artifactId ), "email" : email } ) pom.close() @@ -270,9 +279,14 @@ script.close() os.system( "chmod +x " + basedir + "/script.sh" ) -############################################################ -# Start -############################################################ +print "############################################################" +print "Running integration tests" +print "" +print "NOTE:" +print "When running these integration tests you will get some" +print "stacktraces related." +print "############################################################" +print "" # This is the email that will be used as the nag email address email = "[EMAIL PROTECTED]" @@ -329,6 +343,8 @@ assertEquals( "The project name wasn't changed.", "Maven 1 Project - Changed", maven1.name ) assertEquals( "The project version wasn't changed.", "1.1", maven1.version ) + removeProject( maven1.id ); + if 1: progress( "Initializing Maven 2 CVS project" ) initMaven2Project( maven2Project, cvsroot, "maven-2" ) @@ -345,16 +361,18 @@ build = continuum.buildProject( maven2.id ) assertSuccessfulNoBuildPerformed( build ) + removeProject( maven2Id ) + if 1: progress( "Initializing Ant SVN project" ) initAntProject( antProject ) svnImport( antProject, svnroot, "ant-svn" ) progress( "Adding Ant SVN project" ) - antSvnId = continuum.addProjectFromScm( "scm:svn:file://" + svnroot + "/ant-svn", "ant", "Ant SVN Project", email, "3.0", - { - "executable": "ant", - "targets" : "clean, build" + antSvnId = continuum.addProjectFromScm( "scm:svn:file://" + svnroot + "/ant-svn", "ant", "Ant SVN Project", email, "3.0", + { + "executable": "ant", + "targets" : "clean, build" } ) antSvn = continuum.getProject( antSvnId ) assertProject( antSvnId, "Ant SVN Project", email, continuum.STATE_NEW, "3.0", "ant", antSvn ) @@ -362,17 +380,20 @@ build = continuum.buildProject( antSvn.id ) assertSuccessfulAntBuild( build ) + removeProject( antSvnId ) + if 1: progress( "Initializing Ant CVS project" ) initAntProject( antProject ) cvsImport( antProject, cvsroot, "ant-cvs" ) - antCvsId = continuum.addProjectFromScm( "scm:cvs:local:" + basedir + "/cvsroot:ant-cvs", "ant", "Ant CVS Project", email, "3.0", + antCvsId = continuum.addProjectFromScm( "scm:cvs:local:" + basedir + "/cvsroot:ant-cvs", "ant", "Ant CVS Project", email, "3.0", { "executable": "ant", "targets" : "clean, build"} ) antCvs = continuum.getProject( antCvsId ) assertProject( antCvsId, "Ant CVS Project", email, continuum.STATE_NEW, "3.0", "ant", antCvs ) progress( "Building CVS Ant project" ) build = continuum.buildProject( antCvs.id ) assertSuccessfulAntBuild( build ) + removeProject( antCvsId ) if 1: progress( "Initializing Shell CVS project" ) @@ -380,7 +401,7 @@ cvsImport( shellProject, cvsroot, "shell" ) progress( "Adding CVS Shell project" ) - shellId = continuum.addProjectFromScm( "scm:cvs:local:" + basedir + "/cvsroot:shell", "shell", "Shell Project", email, "3.0", + shellId = continuum.addProjectFromScm( "scm:cvs:local:" + basedir + "/cvsroot:shell", "shell", "Shell Project", email, "3.0", { "executable": "script.sh", "arguments" : ""} ) shell = continuum.getProject( shellId ) @@ -414,6 +435,7 @@ assertSuccessfulShellBuild( build, """a b """ ) + removeProject( shellId ) # TODO: Add project failure tests Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java?rev=164064&r1=164063&r2=164064&view=diff ============================================================================== --- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java (original) +++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java Thu Apr 21 07:10:08 2005 @@ -29,10 +29,10 @@ import org.apache.maven.continuum.project.ContinuumBuildResult; import org.apache.maven.continuum.project.ContinuumProject; import org.apache.maven.continuum.project.ContinuumProjectState; +import org.apache.maven.continuum.project.ScmFile; import org.apache.maven.continuum.scm.ContinuumScm; import org.apache.maven.continuum.store.ContinuumStore; import org.apache.maven.continuum.store.ContinuumStoreException; -import org.apache.maven.scm.ScmFile; import org.apache.maven.scm.command.update.UpdateScmResult; import org.codehaus.plexus.logging.AbstractLogEnabled; @@ -266,9 +266,11 @@ for ( Iterator it = scmFiles.iterator(); it.hasNext(); ) { - ScmFile file = (ScmFile) it.next(); + org.apache.maven.scm.ScmFile scmFile = (org.apache.maven.scm.ScmFile) it.next(); - files.add( file.getPath() ); + ScmFile file = new ScmFile( scmFile.getPath() ); + + files.add( file ); } result.setChangedFiles( files ); Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStore.java URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStore.java?rev=164064&r1=164063&r2=164064&view=diff ============================================================================== --- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStore.java (original) +++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStore.java Thu Apr 21 07:10:08 2005 @@ -24,12 +24,14 @@ import java.util.Properties; import javax.jdo.JDOHelper; +import javax.jdo.PersistenceManager; import org.apache.maven.continuum.project.ContinuumBuild; import org.apache.maven.continuum.project.ContinuumBuildResult; import org.apache.maven.continuum.project.ContinuumJPoxStore; import org.apache.maven.continuum.project.ContinuumProject; import org.apache.maven.continuum.project.ContinuumProjectState; +import org.apache.maven.continuum.project.ScmFile; import org.codehaus.plexus.jdo.JdoFactory; import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; @@ -112,10 +114,65 @@ { try { + store.begin(); + +// System.err.println( "**********************************" ); +// System.err.println( "**********************************" ); +// System.err.println( "**********************************" ); + +// System.err.println( "getProject()" ); + ContinuumProject project = store.getContinuumProject( projectId, false ); + + // TODO: This is dumb. + PersistenceManager pm = store.getThreadState().getPersistenceManager(); + +// System.err.println( "getBuilds()" ); + for ( Iterator it = project.getBuilds().iterator(); it.hasNext(); ) + { + ContinuumBuild build = (ContinuumBuild) it.next(); + +// System.err.println( "getBuildResult()" ); + ContinuumBuildResult result = build.getBuildResult(); + +// System.err.println( "result.getChangedFiles()" ); + List changedFiles = result.getChangedFiles(); + +// System.err.println( "changedFiles.clear()" ); + changedFiles.clear(); + +// System.err.println( "pm.deletePersistentAll( changedFiles )" ); + pm.deletePersistentAll( changedFiles ); + +// System.err.println( "result.setBuild( null )" ); + result.setBuild( null ); + +// System.err.println( "pm.deletePersistent( result )" ); + pm.deletePersistent( result ); + } + +// System.err.println( "project.getBuilds()" ); + List builds = new ArrayList( project.getBuilds() ); + + for ( Iterator it = builds.iterator(); it.hasNext(); ) + { + ContinuumBuild build = (ContinuumBuild) it.next(); + +// System.err.println( "build.setProject( null )" ); + build.setProject( null ); + } + +// System.err.println( "pm.deletePersistentAll( builds )" ); + pm.deletePersistentAll( project.getBuilds() ); + +// System.err.println( "store.deleteContinuumProject( projectId )" ); store.deleteContinuumProject( projectId ); + + store.commit(); } catch ( Exception e ) { + rollback( store ); + throw new ContinuumStoreException( "Error while removing project with id '" + projectId + "'.", e ); } } Modified: maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStoreTest.java URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStoreTest.java?rev=164064&r1=164063&r2=164064&view=diff ============================================================================== --- maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStoreTest.java (original) +++ maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/store/ModelloJPoxContinuumStoreTest.java Thu Apr 21 07:10:08 2005 @@ -29,6 +29,7 @@ import org.apache.maven.continuum.project.ContinuumJPoxStore; import org.apache.maven.continuum.project.ContinuumProject; import org.apache.maven.continuum.project.ContinuumProjectState; +import org.apache.maven.continuum.project.ScmFile; import org.codehaus.plexus.PlexusTestCase; import org.codehaus.plexus.jdo.JdoFactory; @@ -342,6 +343,24 @@ assertTrue( actual.containsKey( "key" ) ); assertEquals( "value", actual.getProperty( "key" ) ); + } + + public void testRemoveProject() + throws Exception + { + ContinuumStore store = (ContinuumStore) lookup( ContinuumStore.ROLE ); + + String projectId = addProject( "Test Project" ); + + String buildId = store.createBuild( projectId ); + + ContinuumBuildResult result = new ShellBuildResult(); + + result.addChangedFile( new ScmFile( "foo" ) ); + + store.setBuildResult( buildId, ContinuumProjectState.OK, result, null ); + + store.removeProject( projectId ); } // ---------------------------------------------------------------------- Modified: maven/continuum/trunk/continuum-model/src/main/resources/continuum.mdo URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-model/src/main/resources/continuum.mdo?rev=164064&r1=164063&r2=164064&view=diff ============================================================================== --- maven/continuum/trunk/continuum-model/src/main/resources/continuum.mdo (original) +++ maven/continuum/trunk/continuum-model/src/main/resources/continuum.mdo Thu Apr 21 07:10:08 2005 @@ -346,11 +346,42 @@ <name>changedFiles</name> <version>1.0.0</version> <association> - <type>String</type> + <type>ScmFile</type> <multiplicity>*</multiplicity> </association> </field> </fields> + </class> + + <class> + <name>ScmFile</name> + <version>1.0.0</version> + <fields> + <field> + <name>path</name> + <version>1.0.0</version> + <type>String</type> + </field> + </fields> + <codeSegments> + <codeSegment> + <code> + public ScmFile() + { + } + + public ScmFile( String path ) + { + this.path = path; + } + + public String toString() + { + return path; + } + </code> + </codeSegment> + </codeSegments> </class> <class>