Gauche > Archives > 2012/05/07

2012/05/07 01:03:34 UTCmaru
#
出遅れました。場所はここであってますよね:
#
diff --git a/ext/tls/axTLS/ssl/test/ssltest.c b/ext/tls/axTLS/ssl/test/ssltest.c
index 3a50f0a..8de2edd 100644
--- a/ext/tls/axTLS/ssl/test/ssltest.c
+++ b/ext/tls/axTLS/ssl/test/ssltest.c
@@ -769,7 +769,8 @@ static int client_socket_init(uint16_t port)
         /*<SK> If the machine is heavily loaded, the first attempt may fail
           because the server isn't ready yet.  We give the server some more
           time and the retry. */
-        usleep(2000000);
+        /*usleep(2000000);*/
+       sleep(2);
         if (connect(client_fd, (struct sockaddr *)&address, sizeof(address)) < 0)        {
             perror("socket");
             SOCKET_CLOSE(client_fd);
#
lolouila:maru% make -s check                                                                              [~/github/Gauche/ext/tls]
Testing rfc.tls ...                                              failed.
discrepancies found.  Errors are:
test ssltest: expects 0 => got 256
2012/05/07 01:05:20 UTCshiro
#
ぬぅぅぅぅぅぅぅぅぅぅぅ
#
1376行目をsleep(2)にしたら通ります? (何度も試してもらってすみません)
2012/05/07 01:06:51 UTCmaru
#
いえいえ。ちょっとお待ち下さい。
#
diff --git a/ext/tls/axTLS/ssl/test/ssltest.c b/ext/tls/axTLS/ssl/test/ssltest.c
index 3a50f0a..719eb70 100644
--- a/ext/tls/axTLS/ssl/test/ssltest.c
+++ b/ext/tls/axTLS/ssl/test/ssltest.c
@@ -769,7 +769,8 @@ static int client_socket_init(uint16_t port)
         /*<SK> If the machine is heavily loaded, the first attempt may fail
           because the server isn't ready yet.  We give the server some more
           time and the retry. */
-        usleep(2000000);
+        /*usleep(2000000);*/
+       sleep(2);
         if (connect(client_fd, (struct sockaddr *)&address, sizeof(address)) < 0)        {
             perror("socket");
             SOCKET_CLOSE(client_fd);
@@ -1373,7 +1374,8 @@ static int SSL_client_test(
 #endif
     }
     
-    usleep(200000);           /* allow server to start */
+    /*usleep(200000);*/           /* allow server to start */
+    sleep(2);
 
     if (*ssl_ctx == NULL)
#
これだと通りますね:
#
lolouila:maru% make -s check                                                                              [~/github/Gauche/ext/tls]
Testing rfc.tls ...                                              passed.
#
上のを戻してみましょうか
#
こっちだけで通るみたいです:
#
iff --git a/ext/tls/axTLS/ssl/test/ssltest.c b/ext/tls/axTLS/ssl/test/ssltest.c
index 3a50f0a..0d99a68 100644
--- a/ext/tls/axTLS/ssl/test/ssltest.c
+++ b/ext/tls/axTLS/ssl/test/ssltest.c
@@ -1373,7 +1373,8 @@ static int SSL_client_test(
 #endif
     }
     
-    usleep(200000);           /* allow server to start */
+    /*usleep(200000);*/           /* allow server to start */
+    sleep(2);
 
     if (*ssl_ctx == NULL)
     {
#
lolouila:maru% make -s check                                                                              [~/github/Gauche/ext/tls]
Testing rfc.tls ...                                              passed.
2012/05/07 01:13:35 UTCshiro
#
ふむ。そっからclient_socket_initまでは全部プロセス内の処理のはずだから… リトライのやり方が間違ってるのかな。
2012/05/07 01:14:56 UTCenami
#
127.0.0.1:* -> 127.0.0.1:19002 の connect を試しちゃうから、あとからサーバが bind できない?
2012/05/07 01:16:10 UTCmaru
#
気になってるんですけど、テスト実行中にコネクション受け付けていいかどうかを確認するダイアログが一瞬表示されて消えちゃうのは特に何もしなくていいんですよね>他のMacOSXユーザの方
2012/05/07 01:17:20 UTCshiro
#
でもopensslプロセスは後でkillされるまで動いてるんですよね > enami
#
一度失敗したらclient_fd使えなくなるとかあるっけ?
#
client_fdの作成からやりなおしてみる方法:
#
--- a/ext/tls/axTLS/ssl/test/ssltest.c
+++ b/ext/tls/axTLS/ssl/test/ssltest.c
@@ -759,24 +759,23 @@ static int client_socket_init(uint16_t port)
 {
     struct sockaddr_in address;
     int client_fd;
-
+    int i;
+    
+    for (i=0; i<3; i++) {
     address.sin_family = AF_INET;
     address.sin_port = htons(port);
     address.sin_addr.s_addr =  inet_addr("127.0.0.1");
     client_fd = socket(AF_INET, SOCK_STREAM, 0);
     if (connect(client_fd, (struct sockaddr *)&address, sizeof(address)) < 0)
     {
-        /*<SK> If the machine is heavily loaded, the first attempt may fail
-          because the server isn't ready yet.  We give the server some more
-          time and the retry. */
-        usleep(2000000);
-        if (connect(client_fd, (struct sockaddr *)&address, sizeof(address)) < 0)        {
-            perror("socket");
-            SOCKET_CLOSE(client_fd);
-            client_fd = -1;
-        }
+        perror("socket");
+        SOCKET_CLOSE(client_fd);
+        client_fd = -1;
+        sleep(2);
+    } else {
+        break;
+    }
     }
-
     return client_fd;
 }
2012/05/07 01:20:38 UTCenami
#
server は bind できてるんでしたっけ?なら違うか。あとは fork するタイミングによっては子プロセスに client_fd が洩れて何かおこってるとか。 CLOEXEC とかしてないですよね?
2012/05/07 01:24:12 UTCshiro
#
client_fdが漏れるとしても、最初の接続ではforkの方を先にしてるはずだしなあ。
2012/05/07 01:32:17 UTCmaru
#
手で当てたので微妙にずれてますけどこちらのパッチで通ります
#
diff --git a/ext/tls/axTLS/ssl/test/ssltest.c b/ext/tls/axTLS/ssl/test/ssltest.c
index 3a50f0a..41e09e1 100644
--- a/ext/tls/axTLS/ssl/test/ssltest.c
+++ b/ext/tls/axTLS/ssl/test/ssltest.c
@@ -759,22 +759,22 @@ static int client_socket_init(uint16_t port)
 {
     struct sockaddr_in address;
     int client_fd;
+    int i;
 
+    for (i=0; i<3; i++) {
     address.sin_family = AF_INET;
     address.sin_port = htons(port);
     address.sin_addr.s_addr =  inet_addr("127.0.0.1");
     client_fd = socket(AF_INET, SOCK_STREAM, 0);
     if (connect(client_fd, (struct sockaddr *)&address, sizeof(address)) < 0)
     {
-        /*<SK> If the machine is heavily loaded, the first attempt may fail
-          because the server isn't ready yet.  We give the server some more
-          time and the retry. */
-        usleep(2000000);
-        if (connect(client_fd, (struct sockaddr *)&address, sizeof(address)) < 0)        {
-            perror("socket");
-            SOCKET_CLOSE(client_fd);
-            client_fd = -1;
-        }
+        perror("socket");
+        SOCKET_CLOSE(client_fd);
+        client_fd = -1;
+        sleep(2);
+    } else {
+        break;
+    }
     }
 
     return client_fd;
2012/05/07 01:33:19 UTCshiro
#
ぐっどにゅーす。
2012/05/07 01:40:22 UTCshiro
#
ちょっと整理してpushしました。54191e3を試してみてください。
2012/05/07 01:53:46 UTCmaru
#
Total: 12745 tests, 12745 passed, 0 failed, 0 aborted.
#
54191e3 全テスト完走です :^)
2012/05/07 01:54:18 UTCshiro
#
やたー。ありがとうございました。
2012/05/07 01:54:43 UTCmaru
#
こちらこそありがとうございます。全部通ると気持ちがいい
2012/05/07 13:33:42 UTCとおる。
#
さっき Lion でビルドしてみたら、 http://comments.gmane.org/gmane.comp.programming.garbage-collection.boehmgc/4673 これに引っかかりました。Xcode のバージョンによるんですかね。パッチ当てたらビルドできました。
2012/05/07 18:19:05 UTCshiro
#
gcc-llvmの方の問題でもあるってことなので、Xcodeの特定のバージョンでひっかかるってことだと思います。boehm gcの方もfixが入ってるようなのでこっちでも当てときます。