public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
* [SCM]  master: Add StopEventLoopWhenProcTerminates.
@ 2008-03-11 15:21 cagney
  0 siblings, 0 replies; only message in thread
From: cagney @ 2008-03-11 15:21 UTC (permalink / raw)
  To: frysk-cvs

The branch, master has been updated
       via  f21c86aac743a2a3c201e78d8167b90e5791bd6d (commit)
      from  c25d6b88f051607f5dfcab2c3f55fe295f872a09 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit f21c86aac743a2a3c201e78d8167b90e5791bd6d
Author: Andrew Cagney <cagney@redhat.com>
Date:   Tue Mar 11 11:19:08 2008 -0400

    Add StopEventLoopWhenProcTerminates.
    
    frysk-core/frysk/isa/corefiles/ChangeLog
    2008-03-11  Andrew Cagney  <cagney@redhat.com>
    
    	* TestLinuxElfCorefile.java: Update to match Offspring.
    
    frysk-core/frysk/proc/ChangeLog
    2008-03-11  Andrew Cagney  <cagney@redhat.com>
    
    	* StressTestAbandon.java: Update to match Offspring.
    	* TestProcTasksObserver.java: Ditto.
    	* TestProcGet.java: Ditto.
    	* TestProcForceDetach.java: Ditto.
    	* TestMapGet.java: Ditto.
    	* TestExec.java: Ditto.
    	* TestAbandon.java: Ditto.
    	* StressAttachDetachRapidlyCloningMainTask.java: Ditto.
    
    frysk-core/frysk/proc/live/ChangeLog
    2008-03-11  Andrew Cagney  <cagney@redhat.com>
    
    	* TestProcStopped.java: Update to match Offspring.
    	* TestRuntimeIsa.java: Ditto.
    
    frysk-core/frysk/testbed/ChangeLog
    2008-03-11  Andrew Cagney  <cagney@redhat.com>
    
    	* TestLib.java (assertRunToFindProc(ProcessIdentifier)): New.
    	* Offspring.java (assertRunToFindProc()): New.
    	(assertFindProcAndTasks()): Delete.
    	* StopEventLoopWhenProcTerminates.java: New.
    	* TestStopEventLoopWhenProcTerminates.java: New.
    
    frysk-core/frysk/util/ChangeLog
    2008-03-11  Andrew Cagney  <cagney@redhat.com>
    
    	* StressTestStackTraceAction.java: Update to match Offspring.
    	* TestStackTraceAction.java: Ditto.

-----------------------------------------------------------------------

Summary of changes:
 frysk-core/frysk/isa/corefiles/ChangeLog           |    4 +
 .../frysk/isa/corefiles/TestLinuxElfCorefile.java  |    2 +-
 frysk-core/frysk/proc/ChangeLog                    |    9 +++
 .../StressAttachDetachRapidlyCloningMainTask.java  |    2 +-
 frysk-core/frysk/proc/StressTestAbandon.java       |    2 +-
 frysk-core/frysk/proc/TestAbandon.java             |    6 +-
 frysk-core/frysk/proc/TestExec.java                |    4 +-
 frysk-core/frysk/proc/TestMapGet.java              |    2 +-
 frysk-core/frysk/proc/TestProcForceDetach.java     |    2 +-
 frysk-core/frysk/proc/TestProcGet.java             |   12 ++--
 frysk-core/frysk/proc/TestProcTasksObserver.java   |   12 ++--
 frysk-core/frysk/proc/dead/TestLinuxCore.java      |    2 +-
 frysk-core/frysk/proc/live/ChangeLog               |    3 +
 frysk-core/frysk/proc/live/TestProcStopped.java    |    4 +-
 frysk-core/frysk/proc/live/TestRuntimeIsa.java     |    8 +-
 frysk-core/frysk/testbed/ChangeLog                 |    8 +++
 frysk-core/frysk/testbed/Offspring.java            |   24 +-------
 ...d.java => StopEventLoopWhenProcTerminates.java} |   60 ++++++++++----------
 frysk-core/frysk/testbed/TestLib.java              |   21 +++++++
 ...va => TestStopEventLoopWhenProcTerminates.java} |   56 +++++++++++-------
 frysk-core/frysk/util/ChangeLog                    |    5 ++
 .../frysk/util/StressTestStackTraceAction.java     |    2 +-
 frysk-core/frysk/util/TestStackTraceAction.java    |    2 +-
 23 files changed, 151 insertions(+), 101 deletions(-)
 copy frysk-core/frysk/testbed/{StopEventLoopWhenProcRemoved.java => StopEventLoopWhenProcTerminates.java} (68%)
 copy frysk-core/frysk/testbed/{IsaTestbed.java => TestStopEventLoopWhenProcTerminates.java} (60%)

First 500 lines of diff:
diff --git a/frysk-core/frysk/isa/corefiles/ChangeLog b/frysk-core/frysk/isa/corefiles/ChangeLog
index 790d374..bb8140c 100644
--- a/frysk-core/frysk/isa/corefiles/ChangeLog
+++ b/frysk-core/frysk/isa/corefiles/ChangeLog
@@ -1,3 +1,7 @@
+2008-03-11  Andrew Cagney  <cagney@redhat.com>
+
+	* TestLinuxElfCorefile.java: Update to match Offspring.
+
 2008-02-28  Phil Muldoon  <pmuldoon@redhat.com>
 
 	* TestLinuxElfCorefile.java (constructStackOnlyCore): Delete.
diff --git a/frysk-core/frysk/isa/corefiles/TestLinuxElfCorefile.java b/frysk-core/frysk/isa/corefiles/TestLinuxElfCorefile.java
index b3500e3..ea6e64c 100644
--- a/frysk-core/frysk/isa/corefiles/TestLinuxElfCorefile.java
+++ b/frysk-core/frysk/isa/corefiles/TestLinuxElfCorefile.java
@@ -323,7 +323,7 @@ public class TestLinuxElfCorefile
   {
     SlaveOffspring ackProc = SlaveOffspring.createDaemon();
     assertNotNull(ackProc);
-    Proc proc = ackProc.assertFindProcAndTasks();
+    Proc proc = ackProc.assertRunToFindProc();
     assertNotNull(proc);
     return proc;
   }
diff --git a/frysk-core/frysk/proc/ChangeLog b/frysk-core/frysk/proc/ChangeLog
index 96d84d5..3e6df24 100644
--- a/frysk-core/frysk/proc/ChangeLog
+++ b/frysk-core/frysk/proc/ChangeLog
@@ -1,5 +1,14 @@
 2008-03-11  Andrew Cagney  <cagney@redhat.com>
 
+	* StressTestAbandon.java: Update to match Offspring.
+	* TestProcTasksObserver.java: Ditto.
+	* TestProcGet.java: Ditto.
+	* TestProcForceDetach.java: Ditto.
+	* TestMapGet.java: Ditto.
+	* TestExec.java: Ditto.
+	* TestAbandon.java: Ditto.
+	* StressAttachDetachRapidlyCloningMainTask.java: Ditto.
+
 	* TestMemory.java: Delete.
 
 	* SyscallExaminer.java: Delete.
diff --git a/frysk-core/frysk/proc/StressAttachDetachRapidlyCloningMainTask.java b/frysk-core/frysk/proc/StressAttachDetachRapidlyCloningMainTask.java
index 5513e2b..c46019e 100644
--- a/frysk-core/frysk/proc/StressAttachDetachRapidlyCloningMainTask.java
+++ b/frysk-core/frysk/proc/StressAttachDetachRapidlyCloningMainTask.java
@@ -63,7 +63,7 @@ public class StressAttachDetachRapidlyCloningMainTask
 
 	final int timeout = 20;
 
-	final Proc proc = new FunitThreadsOffspring(1000).assertFindProcAndTasks();
+	final Proc proc = new FunitThreadsOffspring(1000).assertRunToFindProc();
 
 	// Create a list of tasks.  Since the above is constantly
 	// creating new tasks (with the old ones exiting) it is almost
diff --git a/frysk-core/frysk/proc/StressTestAbandon.java b/frysk-core/frysk/proc/StressTestAbandon.java
index 3c535af..0e71254 100644
--- a/frysk-core/frysk/proc/StressTestAbandon.java
+++ b/frysk-core/frysk/proc/StressTestAbandon.java
@@ -85,7 +85,7 @@ public class StressTestAbandon
     public void testStressAbandon () {
 	Proc proc = SlaveOffspring.createDaemon()
 	    .assertSendAddClonesWaitForAcks(99)
-	    .assertFindProcAndTasks();
+	    .assertRunToFindProc();
 	new ProcBlockAction(proc, new Action(proc));
 	assertRunUntilStop("testStressAbandon");
     }
diff --git a/frysk-core/frysk/proc/TestAbandon.java b/frysk-core/frysk/proc/TestAbandon.java
index c24e89b..5252525 100644
--- a/frysk-core/frysk/proc/TestAbandon.java
+++ b/frysk-core/frysk/proc/TestAbandon.java
@@ -213,7 +213,7 @@ public class TestAbandon
     ackProc.findTaskUsingRefresh(true).requestAddInstructionObserver(
                                                                      testObserver);
 
-    Proc proc = ackProc.assertFindProcAndTasks();
+    Proc proc = ackProc.assertRunToFindProc();
     proc.getMainTask().requestDeleteInstructionObserver(testObserver);
 
     proc.requestAbandonAndRunEvent(new RequestStopEvent(Manager.eventLoop));
@@ -324,7 +324,7 @@ public class TestAbandon
     ackProc.findTaskUsingRefresh(true).requestAddInstructionObserver(
                                                                      testObserver);
 
-    Proc proc = ackProc.assertFindProcAndTasks();
+    Proc proc = ackProc.assertRunToFindProc();
 
     proc.requestAbandonAndRunEvent(new RequestStopEvent(Manager.eventLoop));
 
@@ -342,7 +342,7 @@ public class TestAbandon
     ackProc.findTaskUsingRefresh(true).requestAddInstructionObserver(
                                                                      testObserver);
 
-    Proc proc = ackProc.assertFindProcAndTasks();
+    Proc proc = ackProc.assertRunToFindProc();
 
     proc.requestAbandonAndRunEvent(new RequestStopEvent(Manager.eventLoop));
 
diff --git a/frysk-core/frysk/proc/TestExec.java b/frysk-core/frysk/proc/TestExec.java
index f7b6e25..e7355a6 100644
--- a/frysk-core/frysk/proc/TestExec.java
+++ b/frysk-core/frysk/proc/TestExec.java
@@ -245,7 +245,7 @@ public class TestExec
     // loop is kept running until ExecParentObserver .addedTo is
     // called indicating that the attach succeeded.
     ExecParentObserver execParentObserver = new ExecParentObserver();
-    Proc proc = child.assertFindProcAndTasks();
+    Proc proc = child.assertRunToFindProc();
     Task task = child.findTaskUsingRefresh(true);
     task.requestAddExecedObserver(execParentObserver);
     assertRunUntilStop("adding exec observer causing attach");
@@ -301,7 +301,7 @@ public class TestExec
     ExecCommand alias = new ExecCommand(ExecCommand.Executable.ALIAS);
     ExecOffspring child
 	= new ExecOffspring (new ExecCommand(1 /* one thread */, alias));
-    Proc proc = child.assertFindProcAndTasks();
+    Proc proc = child.assertRunToFindProc();
 
     // Attach to the process using the exec observer. The event
     // loop is kept running until execObserverParent .addedTo is
diff --git a/frysk-core/frysk/proc/TestMapGet.java b/frysk-core/frysk/proc/TestMapGet.java
index 0199600..9706fb0 100644
--- a/frysk-core/frysk/proc/TestMapGet.java
+++ b/frysk-core/frysk/proc/TestMapGet.java
@@ -123,7 +123,7 @@ public class TestMapGet
   {
     SlaveOffspring ackProc = SlaveOffspring.createChild();
     assertNotNull(ackProc);
-    Proc proc = ackProc.assertFindProcAndTasks();
+    Proc proc = ackProc.assertRunToFindProc();
     assertNotNull(proc);
     return proc;
   }
diff --git a/frysk-core/frysk/proc/TestProcForceDetach.java b/frysk-core/frysk/proc/TestProcForceDetach.java
index b9c9e9e..8578c73 100644
--- a/frysk-core/frysk/proc/TestProcForceDetach.java
+++ b/frysk-core/frysk/proc/TestProcForceDetach.java
@@ -50,7 +50,7 @@ public class TestProcForceDetach
 
   public void requestRemove(SlaveOffspring ackProc, int count)
   {
-    Proc proc = ackProc.assertFindProcAndTasks();
+    Proc proc = ackProc.assertRunToFindProc();
     new ProcBlockAction(proc, new MyProcBlockAction(proc));
     assertRunUntilStop("test");
   }
diff --git a/frysk-core/frysk/proc/TestProcGet.java b/frysk-core/frysk/proc/TestProcGet.java
index 646cc7c..40abde8 100644
--- a/frysk-core/frysk/proc/TestProcGet.java
+++ b/frysk-core/frysk/proc/TestProcGet.java
@@ -113,7 +113,7 @@ public class TestProcGet
   public void testGetCommand ()
   {
     Offspring child = SlaveOffspring.createDaemon();
-    Proc childProc = child.assertFindProcAndTasks();
+    Proc childProc = child.assertRunToFindProc();
     assertEquals("value of child's getCommand()",
 		 SlaveOffspring.getExecutable().getName(),
                  childProc.getCommand());
@@ -126,7 +126,7 @@ public class TestProcGet
   {
       Offspring child = SlaveOffspring.createDaemon()
 	  .assertSendAddClonesWaitForAcks(1);
-    Proc proc = child.assertFindProcAndTasks(); // and tasks
+    Proc proc = child.assertRunToFindProc(); // and tasks
     List tasks = proc.getTasks();
 
     assertEquals("number of tasks", 2, tasks.size());
@@ -155,8 +155,8 @@ public class TestProcGet
     // Create two children. The refreshes have the side effect of
     // updating this processes proc list.
     Proc[] child = new Proc[] {
-                               SlaveOffspring.createChild().assertFindProcAndTasks(),
-                               SlaveOffspring.createChild().assertFindProcAndTasks() };
+	SlaveOffspring.createChild().assertRunToFindProc(),
+	SlaveOffspring.createChild().assertRunToFindProc() };
     Proc self = host.getSelf();
 
     assertEquals("number of children", 2, self.getChildren().size());
@@ -176,7 +176,7 @@ public class TestProcGet
 	// Create a process with a known set of arguments.
 	ExecCommand cmd = new ExecCommand();
 	ExecOffspring child = new ExecOffspring(cmd);
-	Proc proc = child.assertFindProcAndTasks();
+	Proc proc = child.assertRunToFindProc();
 	String[] cmdLine = proc.getCmdLine();
 	assertEquals("cmdLine.length", cmd.argv.length, cmdLine.length);
 	for (int i = 0; i < cmd.argv.length; i++) {
@@ -193,7 +193,7 @@ public class TestProcGet
 	ExecCommand cmd = new ExecCommand();
 	ExecOffspring child = new ExecOffspring(cmd);
 	String file = new File(cmd.argv[0]).getCanonicalPath();
-	Proc proc = child.assertFindProcAndTasks();
+	Proc proc = child.assertRunToFindProc();
 	assertEquals("exe", proc.getExe(), file);
     }
 }
diff --git a/frysk-core/frysk/proc/TestProcTasksObserver.java b/frysk-core/frysk/proc/TestProcTasksObserver.java
index 57f42d4..87607a4 100644
--- a/frysk-core/frysk/proc/TestProcTasksObserver.java
+++ b/frysk-core/frysk/proc/TestProcTasksObserver.java
@@ -61,7 +61,7 @@ public class TestProcTasksObserver extends TestLib {
      */
     public void manyExistingThread(SlaveOffspring ackProcess)
     {
-	final Proc proc = ackProcess.assertFindProcAndTasks();
+	final Proc proc = ackProcess.assertRunToFindProc();
 		
 	final int count = 4;
 			
@@ -90,7 +90,7 @@ public class TestProcTasksObserver extends TestLib {
     public void singleExistingClone(SlaveOffspring ackProcess)
     {
 	//Create Process
-	Proc proc = ackProcess.assertFindProcAndTasks();
+	Proc proc = ackProcess.assertRunToFindProc();
 		
 	ackProcess.assertSendAddCloneWaitForAcks();
 		
@@ -118,7 +118,7 @@ public class TestProcTasksObserver extends TestLib {
     public void singleExistingThread(SlaveOffspring ackProcess)
     {
 	//Create Process
-	Proc proc = ackProcess.assertFindProcAndTasks();
+	Proc proc = ackProcess.assertRunToFindProc();
 		
 	final int count = 1;
 
@@ -143,7 +143,7 @@ public class TestProcTasksObserver extends TestLib {
     public void doClone(SlaveOffspring ackProcess) {
 	//		Create Process
 		
-	Proc proc = ackProcess.assertFindProcAndTasks();
+	Proc proc = ackProcess.assertRunToFindProc();
 		
 	final int addcount = 1;
 	final int existcount = 1;
@@ -177,7 +177,7 @@ public class TestProcTasksObserver extends TestLib {
     public void delete(SlaveOffspring ackProcess) {
 	//		Create Process
 		
-	Proc proc = ackProcess.assertFindProcAndTasks();
+	Proc proc = ackProcess.assertRunToFindProc();
 		
 	final int delcount = 1;
 	final int existcount = 1;
@@ -215,7 +215,7 @@ public class TestProcTasksObserver extends TestLib {
     {
 	//Create Process
 		
-	Proc proc = ackProcess.assertFindProcAndTasks();
+	Proc proc = ackProcess.assertRunToFindProc();
 		
 	final int existingcount = 1;
 	final int addcount = 1;
diff --git a/frysk-core/frysk/proc/dead/TestLinuxCore.java b/frysk-core/frysk/proc/dead/TestLinuxCore.java
index 519f7dc..9266eb5 100644
--- a/frysk-core/frysk/proc/dead/TestLinuxCore.java
+++ b/frysk-core/frysk/proc/dead/TestLinuxCore.java
@@ -522,7 +522,7 @@ public class TestLinuxCore extends TestLib {
       // nothing but provide the symbols.
     LegacyOffspring ackProc = LegacyOffspring.createChild();
     assertNotNull(ackProc);
-    Proc proc = ackProc.assertFindProcAndTasks();
+    Proc proc = ackProc.assertRunToFindProc();
     assertNotNull(proc);
     return proc;
   }
diff --git a/frysk-core/frysk/proc/live/ChangeLog b/frysk-core/frysk/proc/live/ChangeLog
index 2046d04..bbe5917 100644
--- a/frysk-core/frysk/proc/live/ChangeLog
+++ b/frysk-core/frysk/proc/live/ChangeLog
@@ -1,5 +1,8 @@
 2008-03-11  Andrew Cagney  <cagney@redhat.com>
 
+	* TestProcStopped.java: Update to match Offspring.
+	* TestRuntimeIsa.java: Ditto.
+
 	* LinuxPtraceProc.java (getMainTask()): Implement.
 
 2008-03-10  Andrew Cagney  <cagney@redhat.com>
diff --git a/frysk-core/frysk/proc/live/TestProcStopped.java b/frysk-core/frysk/proc/live/TestProcStopped.java
index 3033ad4..519f8ff 100644
--- a/frysk-core/frysk/proc/live/TestProcStopped.java
+++ b/frysk-core/frysk/proc/live/TestProcStopped.java
@@ -59,12 +59,12 @@ public class TestProcStopped extends TestLib {
 
     private void stopped(SlaveOffspring ackProc) {
 	ackProc.assertSendStop();
-	Proc proc = ackProc.assertFindProcAndTasks();
+	Proc proc = ackProc.assertRunToFindProc();
 	new ProcBlockAction(proc, new MyTester());
     }
 
     private void running(SlaveOffspring ackProc) {
-	Proc proc = ackProc.assertFindProcAndTasks();
+	Proc proc = ackProc.assertRunToFindProc();
 	new ProcBlockAction(proc, new MyTester());
     }
 
diff --git a/frysk-core/frysk/proc/live/TestRuntimeIsa.java b/frysk-core/frysk/proc/live/TestRuntimeIsa.java
index eb63dba..312f9be 100644
--- a/frysk-core/frysk/proc/live/TestRuntimeIsa.java
+++ b/frysk-core/frysk/proc/live/TestRuntimeIsa.java
@@ -111,7 +111,7 @@ public class TestRuntimeIsa extends TestLib {
 
   public void testAttachedCreateChild() {
       SlaveOffspring ackProc = SlaveOffspring.createAttachedChild();
-      Proc proc = ackProc.assertFindProcAndTasks();
+      Proc proc = ackProc.assertRunToFindProc();
       assertNotNull("child has an isa at start", proc.getMainTask().getISA());
       ackProc.assertSendAddForkWaitForAcks();
       Proc child = (Proc) proc.getChildren().iterator().next();
@@ -124,7 +124,7 @@ public class TestRuntimeIsa extends TestLib {
   public void testAttachedCreateAttachedChild ()
   {
     SlaveOffspring ackProc = SlaveOffspring.createAttachedChild();
-    Proc proc = ackProc.assertFindProcAndTasks();
+    Proc proc = ackProc.assertRunToFindProc();
 
     class ForkedObserver
         extends TaskObserverBase
@@ -157,7 +157,7 @@ public class TestRuntimeIsa extends TestLib {
   public void testAttachedCreateAttachedClone()
   {
     SlaveOffspring ackProc = SlaveOffspring.createAttachedChild();
-    Proc proc = ackProc.assertFindProcAndTasks();
+    Proc proc = ackProc.assertRunToFindProc();
 
     class ClonedObserver
         extends TaskObserverBase
@@ -189,7 +189,7 @@ public class TestRuntimeIsa extends TestLib {
 
     public void testAttachDetachAttachAgainDetachAgainAttachAgainAgain() {
 	SlaveOffspring ackProc = SlaveOffspring.createChild();
-	Proc proc = ackProc.assertFindProcAndTasks();
+	Proc proc = ackProc.assertRunToFindProc();
 	Task task = proc.getMainTask();
 	AttachedObserver attacher = new AttachedObserver();
 	task.requestAddAttachedObserver(attacher);
diff --git a/frysk-core/frysk/testbed/ChangeLog b/frysk-core/frysk/testbed/ChangeLog
index abe1e34..0d05d31 100644
--- a/frysk-core/frysk/testbed/ChangeLog
+++ b/frysk-core/frysk/testbed/ChangeLog
@@ -1,3 +1,11 @@
+2008-03-11  Andrew Cagney  <cagney@redhat.com>
+
+	* TestLib.java (assertRunToFindProc(ProcessIdentifier)): New.
+	* Offspring.java (assertRunToFindProc()): New.
+	(assertFindProcAndTasks()): Delete.
+	* StopEventLoopWhenProcTerminates.java: New.
+	* TestStopEventLoopWhenProcTerminates.java: New.
+
 2008-03-03  Andrew Cagney  <cagney@redhat.com>
 
 	* TestLib.java: Use frysk.config.
diff --git a/frysk-core/frysk/testbed/Offspring.java b/frysk-core/frysk/testbed/Offspring.java
index 67e6250..e4c3d0b 100644
--- a/frysk-core/frysk/testbed/Offspring.java
+++ b/frysk-core/frysk/testbed/Offspring.java
@@ -39,14 +39,11 @@
 
 package frysk.testbed;
 
-import frysk.proc.FindProc;
 import frysk.proc.Proc;
 import frysk.proc.Task;
 import frysk.sys.Errno;
-import frysk.proc.Manager;
 import java.util.Iterator;
 import frysk.sys.Signal;
-import frysk.junit.TestCase;
 import frysk.sys.ProcessIdentifier;
 
 /**
@@ -82,23 +79,10 @@ public abstract class Offspring {
 	}
     }
     /**
-     * Find/return the child's Proc, polling /proc if necessary.
+     * Find/return the child's Proc by running the event-loop.
      */
-    public Proc assertFindProcAndTasks () {
-	class ProcFinder implements FindProc {
-	    Proc proc;
-	    public void procFound(Proc p) {
-		proc = p;
-		Manager.eventLoop.requestStop();
-	    }
-	    public void procNotFound(int pid) {
-		TestCase.fail("Couldn't find the given proc " + pid);
-	    }
-	}
-	ProcFinder findProc = new ProcFinder();
-	Manager.host.requestProc(getPid().intValue(), findProc);
-	Manager.eventLoop.run();
-	return findProc.proc;
+    public Proc assertRunToFindProc() {
+	return TestLib.assertRunToFindProc(getPid());
     }
     
     /**
@@ -106,7 +90,7 @@ public abstract class Offspring {
      * necessary.
      */
     public Task findTaskUsingRefresh (boolean mainTask) {
-	Proc proc = assertFindProcAndTasks();
+	Proc proc = assertRunToFindProc();
 	for (Iterator i = proc.getTasks().iterator(); i.hasNext();) {
 	    Task task = (Task) i.next();
 	    if (task.getTid() == proc.getPid()) {
diff --git a/frysk-core/frysk/testbed/StopEventLoopWhenProcRemoved.java b/frysk-core/frysk/testbed/StopEventLoopWhenProcTerminates.java
similarity index 68%
copy from frysk-core/frysk/testbed/StopEventLoopWhenProcRemoved.java
copy to frysk-core/frysk/testbed/StopEventLoopWhenProcTerminates.java
index a0e7dc4..b9a2449 100644
--- a/frysk-core/frysk/testbed/StopEventLoopWhenProcRemoved.java
+++ b/frysk-core/frysk/testbed/StopEventLoopWhenProcTerminates.java
@@ -1,6 +1,6 @@
 // This file is part of the program FRYSK.
 //
-// Copyright 2005, 2006, 2007, 2008, Red Hat Inc.
+// Copyright 2008, Red Hat Inc.
 //
 // FRYSK is free software; you can redistribute it and/or modify it
 // under the terms of the GNU General Public License as published by
@@ -39,48 +39,50 @@
 
 package frysk.testbed;
 
-import java.util.Observer;
-import java.util.Observable;
 import frysk.proc.Proc;
 import frysk.rsl.Log;
 import frysk.proc.Manager;
+import frysk.proc.TaskObserver;
+import frysk.proc.Action;
+import frysk.isa.signals.Signal;
+import frysk.proc.Task;
 import frysk.sys.ProcessIdentifier;
-import frysk.sys.ProcessIdentifierFactory;
 
 /**
  * An observer that stops the eventloop when the process with the
- * given pid is removed.
+ * given pid terminates.
  */
-public class StopEventLoopWhenProcRemoved implements Observer {
-    private static final Log fine
-	= Log.fine(StopEventLoopWhenProcRemoved.class);
 
-    public boolean p;
+public class StopEventLoopWhenProcTerminates extends TaskObserverBase
+    implements TaskObserver.Terminated
+{
+    private static final Log fine
+	= Log.fine(StopEventLoopWhenProcTerminates.class);
 
-    private ProcessIdentifier pid;
+    public boolean terminated;
+    public Signal signal;
+    public int status;
 
-    public StopEventLoopWhenProcRemoved(ProcessIdentifier pid) {
-	this.pid = pid;
-	Manager.host.observableProcRemovedXXX.addObserver(this);
+    private Proc proc;
+    public String toString() {
+	return proc.toString();
     }
-    public StopEventLoopWhenProcRemoved(Offspring pid) {
-	this(pid.getPid());
+
+    public StopEventLoopWhenProcTerminates(Proc proc) {
+	proc.getMainTask().requestAddTerminatedObserver(this);
     }
-    public StopEventLoopWhenProcRemoved(Proc proc) {
-	this(ProcessIdentifierFactory.create(proc.getPid()));
+
+    public StopEventLoopWhenProcTerminates(ProcessIdentifier pid) {
+	this(TestLib.assertRunToFindProc(pid));
     }
 
-    public void update (Observable o, Object obj) {
-	Proc proc = (Proc) obj;
-	if (proc.getPid() == this.pid.intValue()) {
-	    // Shut things down.
-	    fine.log(this, "update", proc,
-		     "has been removed stopping event loop");
-	    Manager.eventLoop.requestStop();
-	    p = true;
-	} else {
-	    fine.log(this, "update", proc,
-		     "has been removed NOT stopping event loop");
-	}
+    public Action updateTerminated(Task task, Signal signal, int status) {
+	fine.log(this, "updateTerminated", task, "signal", signal, "status",


hooks/post-receive
--
frysk system monitor/debugger


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2008-03-11 15:21 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-03-11 15:21 [SCM] master: Add StopEventLoopWhenProcTerminates cagney

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).