public inbox for frysk@sourceware.org
 help / color / mirror / Atom feed
* 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).