From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4666 invoked by alias); 25 Jan 2008 16:48:34 -0000 Received: (qmail 4633 invoked by uid 367); 25 Jan 2008 16:48:31 -0000 Date: Fri, 25 Jan 2008 16:48:00 -0000 Message-ID: <20080125164831.4618.qmail@sourceware.org> From: cagney@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Add frysk.testbed.IsaTestbed; use. X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 250894aaeaa2cfdd1dcacb38bd94991e857eb8ee X-Git-Newrev: 814da5d7520162288f0153df0afe06ce4e39f764 Mailing-List: contact frysk-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: frysk-cvs-owner@sourceware.org Reply-To: frysk@sourceware.org X-SW-Source: 2008-q1/txt/msg00127.txt.bz2 The branch, master has been updated via 814da5d7520162288f0153df0afe06ce4e39f764 (commit) from 250894aaeaa2cfdd1dcacb38bd94991e857eb8ee (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 814da5d7520162288f0153df0afe06ce4e39f764 Author: Andrew Cagney Date: Fri Jan 25 11:48:11 2008 -0500 Add frysk.testbed.IsaTestbed; use. frysk-core/frysk/isa/signals/ChangeLog 2008-01-25 Andrew Cagney * TestSignalTable.java: Use frysk.testbed.IsaTestbed. frysk-core/frysk/isa/syscalls/ChangeLog 2008-01-25 Andrew Cagney * TestSyscallsWithAudit.java: Use frysk.testbed.IsaTestbed. frysk-core/frysk/proc/ChangeLog 2008-01-25 Andrew Cagney * TestSyscallRunning.java: Use IsaTestbed to get the isa. * TestSyscallSignal.java: Ditto. * TestTaskSyscallObserver.java: Ditto. frysk-core/frysk/testbed/ChangeLog 2008-01-25 Andrew Cagney * TestIsa.java: New. * IsaTestbed.java: New. ----------------------------------------------------------------------- Summary of changes: frysk-core/frysk/isa/signals/ChangeLog | 4 + frysk-core/frysk/isa/signals/TestSignalTable.java | 6 +- frysk-core/frysk/isa/syscalls/ChangeLog | 4 + .../frysk/isa/syscalls/TestSyscallsWithAudit.java | 53 +++++++++------ frysk-core/frysk/proc/ChangeLog | 4 + frysk-core/frysk/proc/TestSyscallRunning.java | 5 +- frysk-core/frysk/proc/TestSyscallSignal.java | 3 +- frysk-core/frysk/proc/TestTaskSyscallObserver.java | 4 +- frysk-core/frysk/testbed/ChangeLog | 5 ++ .../frysk/testbed/IsaTestbed.java | 52 ++++++-------- .../testbed/{PidCounter.java => TestIsa.java} | 74 ++++++++++---------- 11 files changed, 117 insertions(+), 97 deletions(-) copy frysk-sys/frysk/sys/Pipe.java => frysk-core/frysk/testbed/IsaTestbed.java (76%) copy frysk-core/frysk/testbed/{PidCounter.java => TestIsa.java} (64%) First 500 lines of diff: diff --git a/frysk-core/frysk/isa/signals/ChangeLog b/frysk-core/frysk/isa/signals/ChangeLog index 83ea832..050274b 100644 --- a/frysk-core/frysk/isa/signals/ChangeLog +++ b/frysk-core/frysk/isa/signals/ChangeLog @@ -1,3 +1,7 @@ +2008-01-25 Andrew Cagney + + * TestSignalTable.java: Use frysk.testbed.IsaTestbed. + 2008-01-24 Andrew Cagney * Signal.java: Move from frysk.proc.Signal. diff --git a/frysk-core/frysk/isa/signals/TestSignalTable.java b/frysk-core/frysk/isa/signals/TestSignalTable.java index 34795cb..03d6bf4 100644 --- a/frysk-core/frysk/isa/signals/TestSignalTable.java +++ b/frysk-core/frysk/isa/signals/TestSignalTable.java @@ -39,7 +39,7 @@ package frysk.isa.signals; -import frysk.testbed.DaemonBlockedAtEntry; +import frysk.testbed.IsaTestbed; import frysk.testbed.TestLib; /** @@ -48,10 +48,10 @@ import frysk.testbed.TestLib; public class TestSignalTable extends TestLib { public void testSignalTable() { - DaemonBlockedAtEntry daemon = new DaemonBlockedAtEntry("funit-slave"); frysk.sys.Signal[] hostSignals = frysk.sys.Signal.getHostSignalSet().toArray(); - SignalTable signalTable = SignalTableFactory.getSignalTable(daemon.getMainTask().getISA()); + SignalTable signalTable + = SignalTableFactory.getSignalTable(IsaTestbed.getISA()); for (int i = 0; i < hostSignals.length; i++) { frysk.sys.Signal hostSignal = hostSignals[i]; if (hostSignal.toString().startsWith("SIGRT")) diff --git a/frysk-core/frysk/isa/syscalls/ChangeLog b/frysk-core/frysk/isa/syscalls/ChangeLog index 8952aa1..5ee27ec 100644 --- a/frysk-core/frysk/isa/syscalls/ChangeLog +++ b/frysk-core/frysk/isa/syscalls/ChangeLog @@ -1,3 +1,7 @@ +2008-01-25 Andrew Cagney + + * TestSyscallsWithAudit.java: Use frysk.testbed.IsaTestbed. + 2008-01-24 Andrew Cagney * LinuxIA32SyscallTable.java: Update; Register moved to diff --git a/frysk-core/frysk/isa/syscalls/TestSyscallsWithAudit.java b/frysk-core/frysk/isa/syscalls/TestSyscallsWithAudit.java index 84f417e..8d612eb 100644 --- a/frysk-core/frysk/isa/syscalls/TestSyscallsWithAudit.java +++ b/frysk-core/frysk/isa/syscalls/TestSyscallsWithAudit.java @@ -1,6 +1,6 @@ // This file is part of the program FRYSK. // -// Copyright 2006, 2007, Red Hat Inc. +// Copyright 2006, 2007, 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 @@ -42,30 +42,20 @@ package frysk.isa.syscalls; import frysk.sys.AuditLibs; import frysk.testbed.TestLib; import frysk.isa.ISA; +import frysk.isa.ISAMap; +import frysk.testbed.IsaTestbed; public class TestSyscallsWithAudit extends TestLib { - public void testLinuxIA32() { - int machine = AuditLibs.MACH_X86; - syscallTest(machine, ISA.IA32); - } + private static final ISAMap machines = new ISAMap("syscall machines") + .put(ISA.IA32, new Integer(AuditLibs.MACH_X86)) + .put(ISA.PPC32BE, new Integer(AuditLibs.MACH_PPC)) + .put(ISA.PPC64BE, new Integer(AuditLibs.MACH_PPC64)) + .put(ISA.X8664, new Integer(AuditLibs.MACH_86_64)) + ; - public void testLinuxPPC32() { - int machine = AuditLibs.MACH_PPC; - syscallTest(machine, ISA.PPC32BE); - } - - public void testLinuxPPC64() { - int machine = AuditLibs.MACH_PPC64; - syscallTest(machine, ISA.PPC64BE); - } - - public void testLinuxX8664() { - int machine = AuditLibs.MACH_86_64; - syscallTest(machine, ISA.X8664); - } - - private void syscallTest(int machine, ISA isa) { + private void syscallTest(ISA isa) { + int machine = ((Integer) machines.get(isa)).intValue(); SyscallTable syscallTable = SyscallTableFactory.getSyscallTable(isa); @@ -104,4 +94,25 @@ public class TestSyscallsWithAudit extends TestLib { } } } + + + public void testLinuxIA32() { + syscallTest(ISA.IA32); + } + + public void testLinuxPPC32() { + syscallTest(ISA.PPC32BE); + } + + public void testLinuxPPC64() { + syscallTest(ISA.PPC64BE); + } + + public void testLinuxX8664() { + syscallTest(ISA.X8664); + } + + public void testHost() { + syscallTest(IsaTestbed.getISA()); + } } diff --git a/frysk-core/frysk/proc/ChangeLog b/frysk-core/frysk/proc/ChangeLog index 75b82c3..cd99c9d 100644 --- a/frysk-core/frysk/proc/ChangeLog +++ b/frysk-core/frysk/proc/ChangeLog @@ -1,5 +1,9 @@ 2008-01-25 Andrew Cagney + * TestSyscallRunning.java: Use IsaTestbed to get the isa. + * TestSyscallSignal.java: Ditto. + * TestTaskSyscallObserver.java: Ditto. + * TestTaskObserver.java: Eliminate uses of frysk.sys.Signal.equals(int). diff --git a/frysk-core/frysk/proc/TestSyscallRunning.java b/frysk-core/frysk/proc/TestSyscallRunning.java index c4ed45a..725a617 100644 --- a/frysk-core/frysk/proc/TestSyscallRunning.java +++ b/frysk-core/frysk/proc/TestSyscallRunning.java @@ -1,6 +1,6 @@ // This file is part of the program FRYSK. // -// Copyright 2006, 2007, Red Hat Inc. +// Copyright 2006, 2007, 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 @@ -53,6 +53,7 @@ import frysk.Config; import frysk.sys.DaemonPipePair; import frysk.isa.syscalls.SyscallTable; import frysk.isa.syscalls.SyscallTableFactory; +import frysk.testbed.IsaTestbed; /** * XXX: This code should be simplified, eliminating local parallelism @@ -175,7 +176,7 @@ public class TestSyscallRunning SyscallObserver(String call, Task task, boolean entered) { SyscallTable syscallTable - = SyscallTableFactory.getSyscallTable(task.getISA()); + = SyscallTableFactory.getSyscallTable(IsaTestbed.getISA()); this.expected = syscallTable.getSyscall(call); this.entered = entered; } diff --git a/frysk-core/frysk/proc/TestSyscallSignal.java b/frysk-core/frysk/proc/TestSyscallSignal.java index 5000765..279d917 100644 --- a/frysk-core/frysk/proc/TestSyscallSignal.java +++ b/frysk-core/frysk/proc/TestSyscallSignal.java @@ -39,6 +39,7 @@ package frysk.proc; +import frysk.testbed.IsaTestbed; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; @@ -254,7 +255,7 @@ public class TestSyscallSignal SyscallObserver(int stophits, Task task) { SyscallTable syscallTable - = SyscallTableFactory.getSyscallTable(task.getISA()); + = SyscallTableFactory.getSyscallTable(IsaTestbed.getISA()); this.stophits = stophits; this.opensys = syscallTable.getSyscall("open"); this.closesys = syscallTable.getSyscall("close"); diff --git a/frysk-core/frysk/proc/TestTaskSyscallObserver.java b/frysk-core/frysk/proc/TestTaskSyscallObserver.java index 217d606..0c7ea9f 100644 --- a/frysk-core/frysk/proc/TestTaskSyscallObserver.java +++ b/frysk-core/frysk/proc/TestTaskSyscallObserver.java @@ -37,7 +37,6 @@ // version and license this file solely under the GPL without // exception. - package frysk.proc; import frysk.isa.syscalls.Syscall; @@ -56,6 +55,7 @@ import frysk.testbed.SlaveOffspring; import frysk.testbed.StopEventLoopWhenProcRemoved; import frysk.testbed.TaskObserverBase; import frysk.testbed.DaemonBlockedAtEntry; +import frysk.testbed.IsaTestbed; /** * Check that syscall events are detected. This should be expanded later to @@ -85,7 +85,7 @@ public class TestTaskSyscallObserver SyscallObserver (Task task) { SyscallTable syscallTable - = SyscallTableFactory.getSyscallTable(task.getISA()); + = SyscallTableFactory.getSyscallTable(IsaTestbed.getISA()); execvesys = syscallTable.getSyscall("execve"); opensys = syscallTable.getSyscall("open"); readsys = syscallTable.getSyscall("read"); diff --git a/frysk-core/frysk/testbed/ChangeLog b/frysk-core/frysk/testbed/ChangeLog index 6879876..212e465 100644 --- a/frysk-core/frysk/testbed/ChangeLog +++ b/frysk-core/frysk/testbed/ChangeLog @@ -1,3 +1,8 @@ +2008-01-25 Andrew Cagney + + * TestIsa.java: New. + * IsaTestbed.java: New. + 2008-01-24 Andrew Cagney * DaemonBlockedAtSignal.java: Update to match diff --git a/frysk-sys/frysk/sys/Pipe.java b/frysk-core/frysk/testbed/IsaTestbed.java similarity index 76% copy from frysk-sys/frysk/sys/Pipe.java copy to frysk-core/frysk/testbed/IsaTestbed.java index bd88db4..5ea3c66 100644 --- a/frysk-sys/frysk/sys/Pipe.java +++ b/frysk-core/frysk/testbed/IsaTestbed.java @@ -1,6 +1,6 @@ // This file is part of the program FRYSK. // -// Copyright 2007, 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 @@ -37,46 +37,36 @@ // version and license this file solely under the GPL without // exception. -package frysk.sys; +package frysk.testbed; + +import frysk.isa.ISA; +import frysk.isa.ElfMap; +import frysk.Config; /** - * Open a Pipe. + * Return the ISA being used by the testbed. */ -public class Pipe -{ - /** - * Use this end for reading. - */ - public final FileDescriptor in; - /** - * Use this end for writing. - */ - public final FileDescriptor out; +public class IsaTestbed { /** - * Create a bi-directional pipe. + * Return the default isa being used for testing. */ - public Pipe () - { - FileDescriptor[] filedes = pipe(); - in = filedes[0]; - out = filedes[1]; + public static ISA getISA() { + return ElfMap.getISA(Config.getPkgLibFile("funit-slave")); } - - public String toString () - { - return "[" + out.getFd () + "|" + in.getFd () + "]"; - } - - public void close () - { - in.close (); - out.close (); + + /** + * Return the 32-bit isa being used for 32-on-64 testing. + */ + public static ISA getISA32() { + return ElfMap.getISA(Config.getPkgLib32File("funit-slave")); } /** - * Really create the pipe. + * Return the 64-bit isa being used for 32-on-64 testing. */ - private native FileDescriptor[] pipe (); + public static ISA getISA64() { + return ElfMap.getISA(Config.getPkgLib64File("funit-slave")); + } } diff --git a/frysk-core/frysk/testbed/PidCounter.java b/frysk-core/frysk/testbed/TestIsa.java similarity index 64% copy from frysk-core/frysk/testbed/PidCounter.java copy to frysk-core/frysk/testbed/TestIsa.java index 717642e..9ab511d 100644 --- a/frysk-core/frysk/testbed/PidCounter.java +++ b/frysk-core/frysk/testbed/TestIsa.java @@ -1,6 +1,6 @@ // This file is part of the program FRYSK. // -// Copyright 2005, 2006, 2007, 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,49 +39,49 @@ package frysk.testbed; -import java.util.List; -import java.util.LinkedList; -import java.util.Observer; -import java.util.Observable; -import frysk.proc.Proc; +import java.io.File; +import frysk.isa.ISA; +import frysk.Config; /** - * Watch for events involving the specified PID process; count the - * number of events seen. + * Test IsaTestbed. */ -public class PidCounter - implements Observer -{ - public final List what = new LinkedList(); // XXX: +public class TestIsa extends TestLib { - private int pid; - - public int count = 0; - - /** - * Create a pid counter bound to PID. - */ - public PidCounter (int pid) { - this.pid = pid; + public void testIsaValid() { + assertNotNull("isa", IsaTestbed.getISA()); } - - /** - * Create a pid counter bound to PID, and attached to - * observable. - */ - public PidCounter (int pid, Observable observable) { - this(pid); - observable.addObserver(this); + public void testIsa32Valid() { + if (missing32or64()) + return; + assertNotNull("isa32", IsaTestbed.getISA32()); + } + public void testIsa64Valid() { + if (missing32or64()) + return; + assertNotNull("isa32", IsaTestbed.getISA32()); } - public void update (Observable o, Object obj) { - if (obj instanceof Proc) { - Proc proc = (Proc) obj; - if (proc.getPid() == pid) { - count++; - what.add(new RuntimeException()); // XXX: - } - } + private void checkIsaMatchesBlockedProcess(ISA isa, File exe) { + assertSame("running isa", + new DaemonBlockedAtEntry(exe).getMainTask().getISA(), + isa); + } + public void testIsaMatchesBlockedProcess() { + checkIsaMatchesBlockedProcess(IsaTestbed.getISA(), + Config.getPkgLibFile("funit-slave")); + } + public void testIsa32MatchesBlockedProcess() { + if (missing32or64()) + return; + checkIsaMatchesBlockedProcess(IsaTestbed.getISA32(), + Config.getPkgLib32File("funit-slave")); + } + public void testIsa64MatchesBlockedProcess() { + if (missing32or64()) + return; + checkIsaMatchesBlockedProcess(IsaTestbed.getISA64(), + Config.getPkgLib64File("funit-slave")); } } hooks/post-receive -- frysk system monitor/debugger