{"id":798,"date":"2008-12-21T23:19:02","date_gmt":"2008-12-22T07:19:02","guid":{"rendered":"http:\/\/multimedia.cx\/eggs\/?p=798"},"modified":"2008-12-22T07:42:04","modified_gmt":"2008-12-22T15:42:04","slug":"implementing-the-rpc-idea","status":"publish","type":"post","link":"https:\/\/multimedia.cx\/eggs\/implementing-the-rpc-idea\/","title":{"rendered":"Implementing The RPC Idea"},"content":{"rendered":"<p>About that <a href=\"http:\/\/multimedia.cx\/eggs\/rpc-based-distributed-test-staging\/\">RPC-based distributed test staging idea<\/a> I brainstormed yesterday, I&#8217;ll have you know that I successfully implemented the thing today. I used the <a href=\"http:\/\/fate.multimedia.cx\/index.php?test_spec=126\">fraps-v4<\/a> test spec for verification because it is known to work correctly right now, and because it only has 7 lines of stdout text. This is what the script looks like in action:<\/p>\n<pre>\r\n$ .\/rpc-dist-test.py \"FFMPEG -i \r\n  SAMPLES_PATH\/fraps\/WoW_2006-11-03_14-58-17-19-nosound-partial.avi \r\n  -f framecrc -\" \r\nasking for results from 12 configurations...\r\ntesting config 0: Linux \/ x86_64 \/ gcc 4.0.4\r\ntesting config 1: Linux \/ x86_64 \/ gcc 4.1.2\r\ntesting config 2: Linux \/ x86_64 \/ gcc 4.2.4\r\ntesting config 3: Linux \/ x86_64 \/ gcc 4.3.2\r\ntesting config 4: Linux \/ x86_64 \/ gcc svn\r\ntesting config 5: Linux \/ PPC \/ gcc 4.0.4\r\ntesting config 6: Linux \/ PPC \/ gcc 4.1.2\r\ntesting config 7: Linux \/ PPC \/ gcc 4.2.4\r\ntesting config 8: Linux \/ PPC \/ gcc 4.3.2\r\ntesting config 9: Linux \/ PPC \/ gcc svn\r\ntesting config 10: Mac OS X \/ x86_32 \/ gcc 4.0.1\r\ntesting config 11: Mac OS X \/ x86_64 \/ gcc 4.0.1\r\n\r\n1 configuration(s) failed\r\n  configuration Mac OS X \/ x86_32 \/ gcc 4.0.1 returned status 133\r\n\r\nThere was 1 unique stdout blob collected\r\nall successful configurations agreed on this stdout blob:\r\n0, 0, 491520, 0x68ff12c0\r\n0, 3000, 491520, 0x22d36f0d\r\n0, 6000, 491520, 0xce6f877d\r\n0, 9000, 491520, 0x85d6744c\r\n0, 12000, 491520, 0x1aa85794\r\n0, 15000, 491520, 0x528d1274\r\n0, 18000, 491520, 0x357ec61c\r\n<\/pre>\n<p>A few notes about the foregoing: <!--more--><\/p>\n<ul>\n<li>It doesn&#8217;t work correctly if the command is broken into multiple lines as shown; I just did that for readability.<\/li>\n<li>The Mac OS X \/ 32-bit configuration is not playing ball and I have yet to figure out why. The 64-bit version works great, though.<\/li>\n<li>There is a little added complexity due to my network setup with getting the Linux \/ 32-bit configurations to contribute results, which is why their participation isn&#8217;t shown yet.<\/li>\n<\/ul>\n<p>Still, I think this is a great first run. Further, it gave me an opportunity to re-test some test specs that I had to remove from service until such time I could figure out how to make them work just right. One such spec is the <a href=\"http:\/\/fate.multimedia.cx\/index.php?test_spec=262\">ea-tgq test<\/a>. This decoder relies on a bit-inexact IDCT. Unfortunately, I could not get all configurations to agree, even with the simple idct (which I don&#8217;t believe the decoder honors):<\/p>\n<pre>\r\n$ .\/rpc-dist-test.py \"FFMPEG -idct simple \r\n  -i SAMPLES_PATH\/ea-tgq\/v27.tgq \r\n  -an -t 0.2 -f framecrc -\"\r\nasking for results from 12 configurations...\r\n[...]\r\n\r\n1 configuration(s) failed\r\n  configuration Mac OS X \/ x86_32 \/ gcc 4.0.1 returned status 133\r\n\r\nThere were 2 unique stdout blobs collected\r\n\r\nThe following configurations agree on the same stdout:\r\n  Linux \/ x86_64 \/ gcc 4.0.4\r\n  Linux \/ x86_64 \/ gcc 4.1.2\r\n  Linux \/ x86_64 \/ gcc 4.3.2\r\n  Linux \/ x86_64 \/ gcc svn\r\n  Linux \/ PPC \/ gcc 4.0.4\r\n  Linux \/ PPC \/ gcc 4.2.4\r\n  Linux \/ PPC \/ gcc 4.3.2\r\n  Linux \/ PPC \/ gcc svn\r\n  Mac OS X \/ x86_64 \/ gcc 4.0.1\r\nstdout:\r\n0, 0, 34944, 0xb5d7c14a\r\n0, 6000, 34944, 0xb5d7c14a\r\n0, 12000, 34944, 0xb5d7c14a\r\n\r\n\r\nThe following configurations agree on the same stdout:\r\n  Linux \/ x86_64 \/ gcc 4.2.4\r\n  Linux \/ PPC \/ gcc 4.1.2\r\nstdout:\r\n0, 0, 34944, 0x5544bb6d\r\n0, 6000, 34944, 0x5544bb6d\r\n0, 12000, 34944, 0x5544bb6d\r\n<\/pre>\n<p>Interesting that those 2 particular configurations vary from the others, but agree with each other.<\/p>\n<p>Not to brag, but I think the tool is already a smashing success&#8211; it has allowed me to re-instate the following test specs due to speedy verification:<\/p>\n<ul>\n<li><a href=\"http:\/\/fate.multimedia.cx\/index.php?test_spec=116\">msrle-8bit<\/a><\/li>\n<li><a href=\"http:\/\/fate.multimedia.cx\/index.php?test_spec=117\">msvideo1-16bit<\/a><\/li>\n<li><a href=\"http:\/\/fate.multimedia.cx\/index.php?test_spec=119\">rpza<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>About that RPC-based distributed test staging idea I brainstormed yesterday, I&#8217;ll have you know that I successfully implemented the thing today. I used the fraps-v4 test spec for verification because it is known to work correctly right now, and because it only has 7 lines of stdout text. This is what the script looks like [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[101],"tags":[108,285,109],"class_list":["post-798","post","type-post","status-publish","format-standard","hentry","category-fate-server","tag-fate","tag-python","tag-testing"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/798","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/comments?post=798"}],"version-history":[{"count":9,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/798\/revisions"}],"predecessor-version":[{"id":809,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/798\/revisions\/809"}],"wp:attachment":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/media?parent=798"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/categories?post=798"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/tags?post=798"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}