From: Subrata Modak <subrata@linux.vnet.ibm.com>
To: Rohit Verma <rohit.170309@gmail.com>
Cc: Ltp-List <ltp-list@lists.sf.net>
Subject: Re: [LTP] [PATCH] Detect test results more accurately when generating HTML
Date: Tue, 26 May 2009 19:57:06 +0530 [thread overview]
Message-ID: <20090526142706.20166.3813.sendpatchset@subratamodak.linux.ibm.com> (raw)
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 12014 bytes --]
Hi,
>On Tue, 2009-05-26 at 09:08 +0530, rohit verma wrote:
>Hi,
>
> This would be a tedious task. If you look into ltp/pan/pan.c, you can
> find that the parent process is writing the tags (<<<test_start>>>,
> <<<test_output>>>, etc...) and the child process goes on to execute
> the testcase using exec system call. Once the child has invoked the
> testcase through exec, the pan does not have any control on flushing
> the output. If flushing is important then it has to be taken up in
> each of the testcases.
>
> If you look at few of the outputs, you can find that the test output
> is appearing before the <<<test_start>>> or in between
> <<<test_start>>> and <<<test_output>>>, which implies that before the
> parent has written the headers, the child executes and writes its
> output to stdout. I don't know if adding delay in child will solve the
> problem.
How much would you want to delay ? May be to some microsecs !!
However delaying is not a good option, but, i am ready to consider.
See, what is the reasanable time so that this problem vanishes.
Meanwhile, i have generated this small patch. It tries to flush all data
to be written to STDOUT before the Parent (PAN) tries to write his
next tag. Moreover, i have included the fflush() to be executed inside
the if()��s domain whenever the parent is writing from <<test_start>>
till <<test_output>>. See, if this can help in solving the problem.
Signed-off-by: Subrata Modak <subrata@linux.vnet.ibm.com>
---
--- ltp-intermediate-20090521/pan/ltp-pan.c.orig 2009-05-26 16:30:39.000000000 +0530
+++ ltp-intermediate-20090521/pan/ltp-pan.c 2009-05-26 19:44:37.000000000 +0530
@@ -1015,6 +1015,7 @@ static pid_t run_child(struct coll_entry
errbuf[errlen] = '\0';
/* fprintf(stderr, "%s", errbuf); */
waitpid(cpid, &status, 0);
+ fflush(stdout); /* Flush any data before writing <<test_end>>*/
if (WIFSIGNALED(status)) {
termid = WTERMSIG(status);
termtype = "signaled";
@@ -1300,14 +1301,14 @@ static void copy_buffered_output(struct
static void write_test_start(struct tag_pgrp *running, const char *init_status)
{
- if (!strcmp(reporttype, "rts"))
+ if (!strcmp(reporttype, "rts")) {
printf("%s\ntag=%s stime=%ld\ncmdline=\"%s\"\ncontacts=\"%s\"\nanalysis=%s\ninitiation_status=\"%s\"\n%s\n",
"<<<test_start>>>",
running->cmd->name, running->mystime, running->cmd->cmdline, "",
"exit", init_status,
"<<<test_output>>>");
-
fflush(stdout);
+ }
}
---
Regards--
Subrata
> Let me know your views on the same.
>
> Regards,
> Rohit
>
>
>
> On Mon, May 25, 2009 at 9:42 PM, Subrata Modak
> <subrata@linux.vnet.ibm.com> wrote:
> > On Fri, 2009-05-22 at 14:55 +0530, rohit verma wrote:
> >> Hi,
> >>
> >>
> >> There is no problem with the genhtml.pl script. The real problem is in
> >> the pan driver (ltp/pan/pan.c). This seems to be a problem of race
> >> condition after going through the code.
> >>
> >
> > I would rather want to get this guy fixed inside pan.c. See, if there is
> > a way so that the concerned test is provisioned by pan:
> >
> > 1) Only after <<test_output>>
> > 2) Pan must flush out everything for writing tags before the actual test
> > is provisioned
> > 3) The test must have written/flushed everything before Pan started
> > writing <<test_end>>
> >
> > Regards--
> > Subrata
> >
> >>
> >> My suggestion was to use the buffered mode as default. This can be
> >> done with the -O option followed by a directory name where the
> >> buffered data can be stored. But, there is a problem - the -O option
> >> has no effect unless the -x option with an argument greater than 1 is
> >> used.
> >>
> >>
> >> In your test runs you can add the options " -O <dirname> -x 2" and
> >> find out if the problem with logging still persists.
> >>
> >>
> >> Regards,
> >> rohit
> >>
> >>
> >>
> >>
> >>
> >>
> >> On Fri, May 22, 2009 at 2:43 PM, Marc Gauthier <marc@tensilica.com>
> >> wrote:
> >> Hi Rohit,
> >>
> >> I guess we've each observed output that the other has
> >> not :-)
> >>
> >> Per your (1): I've seen a few cases where lines between
> >> test_end and test_start do belong to the preceding one, though
> >> they are indeed the exception, not the rule. Looking at the
> >> name to assign to previous seems to catch the proper ones in
> >> all the cases I've seen (default test lists don't repeat the
> >> same test twice in a row).
> >>
> >> Per your (2): Haven't seen that, interesting. That's a bit
> >> harder to sort out, but the script could at least catch the
> >> lines that report PASS/FAIL/BROK etc. And perhaps lines that
> >> don't look like a collection of var=value. Hmmm.... maybe all
> >> it needs is another regexp test, see patch below (against the
> >> genhtml.pl file I posted, which btw was against its latest
> >> version, 1.3).
> >>
> >> I haven't taken time to look at why things get out of order in
> >> the first place, which seems like the correct thing to fix
> >> (well, I looked enough to notice that fflush(stdout) was
> >> really there :-). Though making the script handle it doesn't
> >> hurt, and I've simply been trying to get an accurate look at
> >> test results, this was the quickest way to do it.
> >>
> >> -Marc
> >>
> >> --- genhtml-v4.pl 2009-05-21 01:08:14.747493000 -0700
> >> +++ genhtml.pl 2009-05-22 02:07:47.756226000 -0700
> >> @@ -116,18 +116,18 @@
> >> }
> >>
> >> # Read test result parameters and test output
> >> - while ($line !~ /$end_tag/) {
> >> + while (1) {
> >> + get_line(\$line) or last TEST;
> >> + last if $line =~ /$end_tag/;
> >> ($read_output = 1, next) if $line
> >> =~ /$output_tag/;
> >> ($read_output = 0, next) if $line
> >> =~ /$execution_tag/;
> >> - if ($read_output) {
> >> + if ($read_output or $line !~ /^(\s*\w
> >> +=(".*"|\S*))+\s*$/) {
> >> push @output_lines, $line;
> >> } else {
> >> while ($line =~ s/^\s*(\w+)=(".*"|
> >> \S*)//) {
> >> $values{$1} = $2;
> >> }
> >> }
> >> - } continue {
> >> - get_line(\$line) or last TEST;
> >> }
> >>
> >> # Treat lines that follow <<<end_test>>> as
> >> output lines
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >> ______________________________________________________
> >>
> >> From: rohit verma [mailto:rohit.170309@gmail.com]
> >> Sent: Friday, May 22, 2009 00:13
> >> To: subrata@linux.vnet.ibm.com
> >> Cc: Marc Gauthier; LTP List
> >> Subject: Re: [LTP] [PATCH] Detect test results more
> >> accurately when generating HTML
> >>
> >>
> >>
> >>
> >> Hi,
> >>
> >>
> >> The suggestion to - "Process test output lines that
> >> appear between <<<test_end>>>
> >> and the following <<<test_start>>>. Assign to the
> >> preceding test where the name matches, else to the
> >> following test." does not solve the problem
> >> completely.
> >>
> >>
> >> My observation is:
> >>
> >>
> >> 1. Lines between <<<test_end>>> and <<<test_start>>>
> >> belongs to the following test case and not to the
> >> preceding one.
> >> 2. Also, at times I have observed the test output is
> >> spread in such a way that few lines of the test output
> >> fall between <<<test_end>>> and <<<test_start>>> and
> >> rest of lines appear between the <<<test_start>>> and
> >> <<<test_output>>> of the corresponding testcase.
> >>
> >>
> >> Regards,
> >> rohit
> >>
> >> On Fri, May 22, 2009 at 12:22 PM, Subrata Modak
> >> <subrata@linux.vnet.ibm.com> wrote:
> >> On Thu, 2009-05-21 at 01:13 -0700, Marc
> >> Gauthier wrote:
> >> > Hi, my first patch to this list. Actually
> >> not a patch,
> >> > but the files themselves, to avoid
> >> line-wrapping issues
> >> > and because the diff is twice the size of
> >> the new file.
> >> >
> >> > -Marc
> >>
> >> Thanks Marc.
> >>
> >> Rohit,
> >>
> >> Can you test this and see if these solves the
> >> problem that you were
> >> discussing for long ?
> >>
> >> Regards--
> >> Subrata
> >>
> >> >
> >> >
> >> > -----------
> >> > Detect test results more accurately when
> >> generating HTML
> >> >
> >> > Process test output lines that appear
> >> between <<<test_end>>>
> >> > and the following <<<test_start>>>. Assign
> >> to the preceding
> >> > test where the name matches, else to the
> >> following test.
> >> >
> >> > If a single test has multiple types of
> >> results (e.g. both
> >> > FAIL and WARN), report only the most
> >> significant one, to
> >> > avoid mis-computing the total number of PASS
> >> tests or
> >> > total counts that don't add up to the number
> >> of tests.
> >> >
> >> > If a test's output has no explicit result
> >> (PASS, FAIL, etc),
> >> > look at the exit value to determine whether
> >> it passed.
> >> >
> >> > Setting the SHOW_UNRESOLVED environment
> >> variable to 1
> >> > classifies as UNRESOLVED any test with no
> >> explicit result
> >> > and a zero exit code.
> >> >
> >> > Setting the SUMMARY_OUTPUT environment
> >> variable to 1
> >> > causes only one line of output per test to
> >> be shown, for a
> >> > tighter page that allows quickly scanning
> >> the results.
> >> >
> >> > Show percentage of each result type in
> >> summary section.
> >> >
> >> > Simplify parsing a bit.
> >> >
> >> > Signed-off-by: Marc Gauthier
> >> <marc@tensilica.com>
> >> >
> >> >
>
[-- Attachment #2: Type: text/plain, Size: 432 bytes --]
------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, &
iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
Group, R/GA, & Big Spaceship. http://www.creativitycat.com
[-- Attachment #3: Type: text/plain, Size: 155 bytes --]
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
next reply other threads:[~2009-05-26 14:27 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-26 14:27 Subrata Modak [this message]
2009-05-26 20:14 ` [LTP] [PATCH] Detect test results more accurately when generating HTML Marc Gauthier
2009-05-27 6:44 ` rohit verma
2009-05-27 12:05 ` Marc Gauthier
2009-05-27 14:24 ` Subrata Modak
2009-05-27 14:58 ` Marc Gauthier
2009-05-29 12:54 ` Subrata Modak
2009-06-01 12:47 ` rohit verma
2009-06-02 12:33 ` rohit verma
2009-06-04 9:27 ` Subrata Modak
2009-06-09 18:24 ` Subrata Modak
2009-05-27 14:23 ` Subrata Modak
-- strict thread matches above, loose matches on Subject: below --
2009-05-21 8:13 Marc Gauthier
2009-05-22 6:52 ` Subrata Modak
2009-05-22 7:13 ` rohit verma
2009-05-22 9:13 ` Marc Gauthier
2009-05-22 9:25 ` rohit verma
2009-05-25 16:12 ` Subrata Modak
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090526142706.20166.3813.sendpatchset@subratamodak.linux.ibm.com \
--to=subrata@linux.vnet.ibm.com \
--cc=ltp-list@lists.sf.net \
--cc=rohit.170309@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox