<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Hi,<br>
    <br>
    <div class="moz-cite-prefix">On 01/18/2016 11:01 AM, Dmitry V. Levin
      wrote:<br>
    </div>
    <blockquote cite="mid:20160118030111.GA2178@altlinux.org"
      type="cite">
      <pre wrap="">On Fri, Jan 08, 2016 at 04:07:52PM +0800, Fei, Jie/费 杰 wrote:
</pre>
      <blockquote type="cite">
        <pre wrap="">Hello!

Thanks for your comments several days ago and according to them
I wrote this patch. This patch adds tests to check how strace -e works
with different parameters, how about it?
</pre>
      </blockquote>
      <pre wrap="">[...]
</pre>
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">diff --git a/tests/abbrev-e.c b/tests/abbrev-e.c
new file mode 100644
index 0000000..e33f656
--- /dev/null
+++ b/tests/abbrev-e.c
@@ -0,0 +1,11 @@
+#include <stdio.h>
+#include <sys/utsname.h>
+
+int main()
+{
+       int ret;
+       struct utsname buf;
+       ret = uname(&buf);
+       printf("uname({sysname=\"%s\", nodename=\"%s\", ...}) = %d\n", buf.sysname, buf.nodename, ret);
+       return 0;
+}
diff --git a/tests/abbrev-e.test b/tests/abbrev-e.test
new file mode 100755
index 0000000..3e74d47
--- /dev/null
+++ b/tests/abbrev-e.test
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+. "${srcdir=.}/init.sh"
+
+OUT="${LOG}.out"
+
+run_prog
+run_strace -e abbrev=uname -euname -qq $args >"$OUT"
</pre>
        </blockquote>
      </blockquote>
      <pre wrap="">
What are you testing here?  Since the default behavior is abbrev=all,
I suppose you meant something different from what you've written here.
</pre>
    </blockquote>
    I didn't notice that the default set is all, and now I modified the
    test<br>
    with abbrev=none in patch-v2.<br>
    <blockquote cite="mid:20160118030111.GA2178@altlinux.org"
      type="cite">
      <pre wrap="">
</pre>
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">+
+match_diff "$OUT" "$LOG"
+rm -f "$OUT"
+
+exit 0
diff --git a/tests/raw-e.c b/tests/raw-e.c
new file mode 100644
index 0000000..7b2dfcc
--- /dev/null
+++ b/tests/raw-e.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+#include <unistd.h>
+
+int main()
+{
+       pid_t pid;
+       pid = getpid();
+       printf("getpid() = 0x%x\n", pid);
+       return 0;
+}
diff --git a/tests/raw-e.test b/tests/raw-e.test
new file mode 100755
index 0000000..d76a0f0
--- /dev/null
+++ b/tests/raw-e.test
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+. "${srcdir=.}/init.sh"
+
+OUT="${LOG}.out"
+
+run_prog
+run_strace -e raw=getpid -egetpid -a9 -qq $args >"$OUT"
</pre>
        </blockquote>
      </blockquote>
      <pre wrap="">
getpid is not portable: alpha has no getpid syscall.

</pre>
    </blockquote>
    Thanks! I replaced it with uname in patch-v2.<br>
    <blockquote cite="mid:20160118030111.GA2178@altlinux.org"
      type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">+
+match_diff "$LOG" "$OUT"
+rm -f "$OUT"
+
+exit 0
diff --git a/tests/read-e.c b/tests/read-e.c
new file mode 100644
index 0000000..723cb60
--- /dev/null
+++ b/tests/read-e.c
@@ -0,0 +1,40 @@
+#include <unistd.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+void do_readfd(int fd)
+{
+       int oldfd;
+       oldfd = open("/dev/zero", O_RDONLY);
+       if (-1 == oldfd)
+       {
+               return;
+       }
+       int newfd;
+       if (oldfd == fd)
+       {
+               newfd = fd;
+       }
+       else
+       {
+               newfd = dup2(oldfd, fd);
+               close(oldfd);
+               if (-1 == newfd)
+               {
+                       return;
+               }
+       }
+       char c;
+       read(newfd, &c, 1);
+       close(newfd);
+}
+
+int main()
+{
+       long fd = 4;
+       do_readfd(fd);
+       fd = 5;
+       do_readfd(fd);
+       return 0;
+}
diff --git a/tests/read-e.test b/tests/read-e.test
new file mode 100755
index 0000000..d8ebe1a
--- /dev/null
+++ b/tests/read-e.test
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+. "${srcdir=.}/init.sh"
+
+check_rd()
+{
+    FUNCLINE=`grep -n "$1" "$LOG" | sed -n '$p' | cut -f1 -d:`
+    let FUNCLINE=FUNCLINE+1
+    CONTENT=`sed -n "$FUNCLINE"p "$LOG"`
+    ERROR=`echo "$CONTENT" | grep " | 00000"`
</pre>
        </blockquote>
      </blockquote>
      <pre wrap="">
"let" keyword is not a portable /bin/sh syntax,
and the whole shell script does not use regular shell programming
patterns, e.g. there is no need to save sed's output to a variable
just to grep it afterwards.
</pre>
    </blockquote>
    I have modified the test file.<br>
    <blockquote cite="mid:20160118030111.GA2178@altlinux.org"
      type="cite">
      <pre wrap="">
</pre>
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">+    if [ "$2" -eq 1 ];then
+        if [ "$ERROR" = "" ];then
+            fail_ "read not exist"
+        fi
+    else
+        if [ "$ERROR" != "" ];then
+            fail_ "read exist"
+        fi
+    fi
+}
+
+run_prog
+run_strace -e read=4 -eread -qq $args
+
+check_rd "read(4, \"\\\\0\", 1) \+= 1" 1
+check_rd "read(5, \"\\\\0\", 1) \+= 1" 0
diff --git a/tests/verbose-e.test b/tests/verbose-e.test
new file mode 100755
index 0000000..1c4d361
--- /dev/null
+++ b/tests/verbose-e.test
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+. "${srcdir=.}/init.sh"
+
+OUT="${LOG}.out"
+
+run_prog ./abbrev-e
+run_strace -e verbose=uname -euname -qq $args >"$OUT"
</pre>
        </blockquote>
      </blockquote>
      <pre wrap="">
What are you testing here?  Since the default behavior is verbose=all,
I suppose you meant something different from what you've written here.

</pre>
    </blockquote>
    Same as above, I modified it with verbose=none in patch-v2.<br>
    <blockquote cite="mid:20160118030111.GA2178@altlinux.org"
      type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">+
+match_diff "$OUT" "$LOG"
+rm -f "$OUT"
+
+exit 0
diff --git a/tests/write-e.c b/tests/write-e.c
new file mode 100644
index 0000000..a495c7a
--- /dev/null
+++ b/tests/write-e.c
@@ -0,0 +1,39 @@
+#include <unistd.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+void do_writefd(int fd)
+{
+       int oldfd;
+       oldfd = open("/dev/null", O_WRONLY);
+       if (-1 == oldfd)
+       {
+               return;
+       }
+       int newfd;
+       if (oldfd == fd)
+       {
+        newfd = fd;
+       }
+       else
+       {
+               newfd = dup2(oldfd, fd);
+               close(oldfd);
+               if (-1 == newfd)
+               {
+                       return;
+               }
+       }
+       write(newfd, "", 1);
+       close(newfd);
+}
+
+int main()
+{
+       long fd = 4;
+       do_writefd(fd);
+       fd = 5;
+       do_writefd(fd);
+       return 0;
+}
diff --git a/tests/write-e.test b/tests/write-e.test
new file mode 100755
index 0000000..ba07fa9
--- /dev/null
+++ b/tests/write-e.test
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+. "${srcdir=.}/init.sh"
+
+check_wr()
+{
+    FUNCLINE=`grep -n "$1" "$LOG" | sed -n '$p' | cut -f1 -d:`
+    let FUNCLINE=FUNCLINE+1
+    CONTENT=`sed -n "$FUNCLINE"p "$LOG"`
+    ERROR=`echo "$CONTENT" | grep " | 00000"`
</pre>
        </blockquote>
      </blockquote>
      <pre wrap="">
"let" keyword is not a portable /bin/sh syntax,
and the whole shell script does not use regular shell programming
patterns, e.g. there is no need to save sed's output to a variable
just to grep it afterwards.


</pre>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
<a class="moz-txt-link-freetext" href="http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140">http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140</a></pre>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Strace-devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Strace-devel@lists.sourceforge.net">Strace-devel@lists.sourceforge.net</a>
<a class="moz-txt-link-freetext" href="https://lists.sourceforge.net/lists/listinfo/strace-devel">https://lists.sourceforge.net/lists/listinfo/strace-devel</a>
</pre>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Thanks!
Fei Jie</pre>
  </body>
</html>