* Trouble with frysk.expunit.Expect and fhpd
@ 2007-08-29 18:40 Adam Jocksch
2007-08-29 19:01 ` Andrew Cagney
0 siblings, 1 reply; 3+ messages in thread
From: Adam Jocksch @ 2007-08-29 18:40 UTC (permalink / raw)
To: frysk
[-- Attachment #1: Type: text/plain, Size: 672 bytes --]
I've been trying to re-tool frysk.hpd.TestDisplayCommand to use
funit-rt-varchange instead of hpd-c (bug #4951). However, the expect
script fails when fhpd doesn't behave as expected when adding a
breakpoint. I've attached the revised version of TestDisplayCommand.java
as well as the log created by ./TestRunner -log frysk=FINE
frysk.hpd.TestDisplayCommand. Running 'frysk/bindir/fhpd
frysk/pkglibdir/funit-rt-varchange' from the frysk-core directory
produces the expected results; it's only under Expect that fhpd is
functioning strangely.
I've also had fhpd hang when creating a display under expect, but I'm
currently unable to reproduce that problem.
Adam
[-- Attachment #2: frysk_core_event.log.28 --]
[-- Type: text/plain, Size: 2104 bytes --]
testHpdDisplayCommands(frysk.hpd.TestDisplayCommand) ---- startTest ----
frysk.expunit.Expect@219d38 new /dev/pts/3 pid 7551 args [/home/ajocksch/build/frysk/frysk-core/frysk/bindir/fhpd, /home/ajocksch/build/frysk/frysk-core/frysk/pkglibdir/funit-rt-varchange]
frysk.expunit.Expect@219d38 find <<\(fhpd\) >> in <<>>?
frysk.expunit.Expect@219d38 poll for 5000 milliseconds
frysk.expunit.Expect@219d38 poll -> <<Attached to process 7554
(fhpd) >> giving <<Attached to process 7554
(fhpd) >>
frysk.expunit.Expect@219d38 find <<\(fhpd\) >> in <<Attached to process 7554
(fhpd) >>?
frysk.expunit.Expect@219d38 match <<(fhpd) >>
frysk.expunit.Expect@219d38 send <<break #funit-rt-varchange.c#53
>>
frysk.expunit.Expect@219d38 find <<breakpoint.*\(fhpd\) >> in <<>>?
frysk.expunit.Expect@219d38 poll for 5000 milliseconds
frysk.expunit.Expect@219d38 poll -> <<break #funit-rt->> giving <<break #funit-rt->>
frysk.expunit.Expect@219d38 find <<breakpoint.*\(fhpd\) >> in <<break #funit-rt->>?
frysk.expunit.Expect@219d38 poll for 5000 milliseconds
frysk.expunit.Expect@219d38 poll -> <<varchange.c#53
>> giving <<break #funit-rt-varchange.c#53
>>
frysk.expunit.Expect@219d38 find <<breakpoint.*\(fhpd\) >> in <<break #funit-rt-varchange.c#53
>>?
frysk.expunit.Expect@219d38 poll for 4999 milliseconds
frysk.expunit.Expect@219d38 poll -> <<(fhpd) >> giving <<break #funit-rt-varchange.c#53
(fhpd) >>
frysk.expunit.Expect@219d38 find <<breakpoint.*\(fhpd\) >> in <<break #funit-rt-varchange.c#53
(fhpd) >>?
frysk.expunit.Expect@219d38 poll for 4998 milliseconds
frysk.expunit.Expect@219d38 find <<breakpoint.*\(fhpd\) >> in <<break #funit-rt-varchange.c#53
(fhpd) >>?
frysk.expunit.Expect@219d38 poll for 1 milliseconds
frysk.expunit.Expect@219d38 find <<breakpoint.*\(fhpd\) >> in <<break #funit-rt-varchange.c#53
(fhpd) >>?
frysk.expunit.Expect@219d38 match TIMEOUT
frysk.expunit.Expect@219d38 close
testHpdDisplayCommands(frysk.hpd.TestDisplayCommand) --- addError ---- ERROR: frysk.expunit.TimeoutException: Timeout of 5 expired
testHpdDisplayCommands(frysk.hpd.TestDisplayCommand) ---- endTest ----
[-- Attachment #3: TestDisplayCommand.java --]
[-- Type: text/x-java, Size: 3841 bytes --]
// This file is part of the program FRYSK.
//
// Copyright 2007 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
// the Free Software Foundation; version 2 of the License.
//
// FRYSK is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with FRYSK; if not, write to the Free Software Foundation,
// Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
//
// In addition, as a special exception, Red Hat, Inc. gives You the
// additional right to link the code of FRYSK with code not covered
// under the GNU General Public License ("Non-GPL Code") and to
// distribute linked combinations including the two, subject to the
// limitations in this paragraph. Non-GPL Code permitted under this
// exception must only link to the code of FRYSK through those well
// defined interfaces identified in the file named EXCEPTION found in
// the source code files (the "Approved Interfaces"). The files of
// Non-GPL Code may instantiate templates or use macros or inline
// functions from the Approved Interfaces without causing the
// resulting work to be covered by the GNU General Public
// License. Only Red Hat, Inc. may make changes or additions to the
// list of Approved Interfaces. You must obey the GNU General Public
// License in all respects for all of the FRYSK code and other code
// used in conjunction with FRYSK except the Non-GPL Code covered by
// this exception. If you modify this file, you may extend this
// exception to your version of the file, but you are not obligated to
// do so. If you do not wish to provide this exception without
// modification, you must delete this exception statement from your
// version and license this file solely under the GPL without
// exception.
package frysk.hpd;
import frysk.expunit.Expect;
import frysk.Config;
public class TestDisplayCommand
extends TestLib
{
public void testHpdDisplayCommands() {
// if (unresolved(4951))
// return;
e = new Expect (new String[] {
Config.getBinFile("fhpd").getPath (),
Config.getPkgLibFile("funit-rt-varchange").getPath ()
});
e.expect (prompt);
// Break
e.send("break #funit-rt-varchange.c#53\n");
e.expect("breakpoint.*" + prompt);
e.send("go\n");
e.expect("go.*" + prompt + ".*Breakpoint.*#funit-rt-varchange.c#53.*");
e.send("display x\n");
e.expect("display.*1:.*x = .*" + prompt);
e.send("display y*2\n");
e.expect("display.*2:.*temp = .*" + prompt);
e.send("actionpoints -display\n");
e.expect("actionpoints.*DISPLAYS.*2.*y.*\"y.*\".*\n1.*y.*\"x\".*"
+ prompt);
e.send("disable 1\n");
e.expect("disable.*display 1 disabled.*" + prompt);
e.send("actionpoints -display\n");
e.expect("actionpoints.*DISPLAYS.*2.*y.*\"y.*\".*\n1.*n.*\"x\".*"
+ prompt);
e.send("disable -display\n");
e.expect("disable.*display 2 disabled.*" + prompt);
e.send("actionpoints -display\n");
e.expect("actionpoints.*DISPLAYS.*2.*n.*\"y.*\".*\n1.*n.*\"x\".*"
+ prompt);
e.send("enable 2\n");
e.expect("enable.*display 2 enabled.*" + prompt);
e.send("enable -display\n");
e.expect("enable.*display 1 enabled.*" + prompt);
e.send("delete 1\n");
e.expect("delete.*display 1 deleted.*" + prompt);
e.send("actionpoints -display\n");
e.expect("actionpoints.*DISPLAYS.*2.*y.*\"y.*\".*" + prompt);
e.send("delete -display\n");
e.expect("delete.*display 2 deleted.*" + prompt);
e.send("actionpoints -display\n");
e.expect("actionpoints.*" + prompt);
e.send("quit\n");
e.expect("Quitting...");
e.close();
}
}
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Trouble with frysk.expunit.Expect and fhpd
2007-08-29 18:40 Trouble with frysk.expunit.Expect and fhpd Adam Jocksch
@ 2007-08-29 19:01 ` Andrew Cagney
2007-08-29 22:30 ` Adam Jocksch
0 siblings, 1 reply; 3+ messages in thread
From: Andrew Cagney @ 2007-08-29 19:01 UTC (permalink / raw)
To: Adam Jocksch; +Cc: frysk
Adam Jocksch wrote:
> I've been trying to re-tool frysk.hpd.TestDisplayCommand to use
> funit-rt-varchange instead of hpd-c (bug #4951). However, the expect
> script fails when fhpd doesn't behave as expected when adding a
> breakpoint. I've attached the revised version of
> TestDisplayCommand.java as well as the log created by ./TestRunner
> -log frysk=FINE frysk.hpd.TestDisplayCommand. Running
> 'frysk/bindir/fhpd frysk/pkglibdir/funit-rt-varchange' from the
> frysk-core directory produces the expected results; it's only under
> Expect that fhpd is functioning strangely.
>
see: http://sourceware.org/bugzilla/show_bug.cgi?id=4914 and 4919 ;
missting synchronization in fhpd can lead to expunit can feeding it
commands to fast. Try adding a sleep(5) after the run, but before the
breakpoint is set; something like:
e.send("run " + Config.getPkgLibFile("funit-stepping-asm") + "\n");
e.expect(5, "Attached.*\n" + prompt);
// Remove this - #4919 and #4914.
try { Thread.sleep(2000); } catch (Exception e) {}
e.send("break #" + source + "#" + startLine + "\n");
e.expect("breakpoint.*\n" + prompt);
if this lets it work, keep the sleep and mark the test as
unresolved(4914). We can then still run it with --unresolved.
> I've also had fhpd hang when creating a display under expect, but I'm
> currently unable to reproduce that problem.
>
> Adam
> ------------------------------------------------------------------------
>
> testHpdDisplayCommands(frysk.hpd.TestDisplayCommand) ---- startTest ----
> frysk.expunit.Expect@219d38 new /dev/pts/3 pid 7551 args [/home/ajocksch/build/frysk/frysk-core/frysk/bindir/fhpd, /home/ajocksch/build/frysk/frysk-core/frysk/pkglibdir/funit-rt-varchange]
> frysk.expunit.Expect@219d38 find <<\(fhpd\) >> in <<>>?
> frysk.expunit.Expect@219d38 poll for 5000 milliseconds
> frysk.expunit.Expect@219d38 poll -> <<Attached to process 7554
> (fhpd) >> giving <<Attached to process 7554
> (fhpd) >>
> frysk.expunit.Expect@219d38 find <<\(fhpd\) >> in <<Attached to process 7554
> (fhpd) >>?
> frysk.expunit.Expect@219d38 match <<(fhpd) >>
> frysk.expunit.Expect@219d38 send <<break #funit-rt-varchange.c#53
>
> frysk.expunit.Expect@219d38 find <<breakpoint.*\(fhpd\) >> in <<>>?
> frysk.expunit.Expect@219d38 poll for 5000 milliseconds
> frysk.expunit.Expect@219d38 poll -> <<break #funit-rt->> giving <<break #funit-rt->>
> frysk.expunit.Expect@219d38 find <<breakpoint.*\(fhpd\) >> in <<break #funit-rt->>?
> frysk.expunit.Expect@219d38 poll for 5000 milliseconds
> frysk.expunit.Expect@219d38 poll -> <<varchange.c#53
>
>>> giving <<break #funit-rt-varchange.c#53
>>>
>>>
> frysk.expunit.Expect@219d38 find <<breakpoint.*\(fhpd\) >> in <<break #funit-rt-varchange.c#53
>
>>> ?
>>>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Trouble with frysk.expunit.Expect and fhpd
2007-08-29 19:01 ` Andrew Cagney
@ 2007-08-29 22:30 ` Adam Jocksch
0 siblings, 0 replies; 3+ messages in thread
From: Adam Jocksch @ 2007-08-29 22:30 UTC (permalink / raw)
To: Andrew Cagney; +Cc: frysk
Andrew Cagney wrote:
> Adam Jocksch wrote:
>> I've been trying to re-tool frysk.hpd.TestDisplayCommand to use
>> funit-rt-varchange instead of hpd-c (bug #4951). However, the expect
>> script fails when fhpd doesn't behave as expected when adding a
>> breakpoint. I've attached the revised version of
>> TestDisplayCommand.java as well as the log created by ./TestRunner
>> -log frysk=FINE frysk.hpd.TestDisplayCommand. Running
>> 'frysk/bindir/fhpd frysk/pkglibdir/funit-rt-varchange' from the
>> frysk-core directory produces the expected results; it's only under
>> Expect that fhpd is functioning strangely.
>>
> see: http://sourceware.org/bugzilla/show_bug.cgi?id=4914 and 4919 ;
> missting synchronization in fhpd can lead to expunit can feeding it
> commands to fast. Try adding a sleep(5) after the run, but before the
> breakpoint is set; something like:
>
> e.send("run " + Config.getPkgLibFile("funit-stepping-asm") +
> "\n");
> e.expect(5, "Attached.*\n" + prompt);
>
> // Remove this - #4919 and #4914.
> try { Thread.sleep(2000); } catch (Exception e) {}
>
> e.send("break #" + source + "#" + startLine + "\n");
> e.expect("breakpoint.*\n" + prompt);
>
> if this lets it work, keep the sleep and mark the test as
> unresolved(4914). We can then still run it with --unresolved.
>
Awesome, that worked like a charm. It also fixed the error with creating
displays through expect. However in my testcase I don't send run to
fhpd, rather I execute fhpd with the executable as an argument. For
right now TestDisplayCommands is marked unresolved(4941) and passes and
I have filed bz#4982 re: removing the sleep statements. If need be I can
create a new bug for this race condition and change TestDisplayCommands
appropriately.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2007-08-29 22:30 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-08-29 18:40 Trouble with frysk.expunit.Expect and fhpd Adam Jocksch
2007-08-29 19:01 ` Andrew Cagney
2007-08-29 22:30 ` Adam Jocksch
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).