[Libreoffice-commits] online.git: test/fakesockettest.cpp

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Thu Nov 1 10:54:25 UTC 2018


 test/fakesockettest.cpp |  212 ++++++++++++++++++++++++------------------------
 1 file changed, 109 insertions(+), 103 deletions(-)

New commits:
commit 781162fdddb29a07a9a225bb9b9c2dafb0fe2bc6
Author:     Tor Lillqvist <tml at collabora.com>
AuthorDate: Thu Nov 1 12:49:59 2018 +0200
Commit:     Tor Lillqvist <tml at collabora.com>
CommitDate: Thu Nov 1 12:53:47 2018 +0200

    Fix my misunderstanding of Cppunit exception use
    
    I had no idea that the CPPUNIT_ASSERT* macros work by throwing
    exceptions. They do, so one should thus not catch them, but let the
    Cppunit code take care of that.
    
    Also, make the tests a bit more specific and add some
    fakeSocketAvailableDataLength() checks.
    
    Change-Id: I9291822114331c21b774bb41116e8b2ff709dae2

diff --git a/test/fakesockettest.cpp b/test/fakesockettest.cpp
index be45c3ed5..78ff8ae45 100644
--- a/test/fakesockettest.cpp
+++ b/test/fakesockettest.cpp
@@ -59,143 +59,149 @@ public:
 
 void FakeSocketTest::testBasic()
 {
-    try
-    {
-        // Create three sockets: s0, s1 and s2.
-        int s0 = fakeSocketSocket();
-        CPPUNIT_ASSERT(s0 >= 0);
-        int s1 = fakeSocketSocket();
-        CPPUNIT_ASSERT(s1 >= 0);
-        int s2 = fakeSocketSocket();
-        CPPUNIT_ASSERT(s2 >= 0);
+    // Create three sockets: s0, s1 and s2.
+    int s0 = fakeSocketSocket();
+    CPPUNIT_ASSERT(s0 >= 0);
+    int s1 = fakeSocketSocket();
+    CPPUNIT_ASSERT(s1 >= 0);
+    int s2 = fakeSocketSocket();
+    CPPUNIT_ASSERT(s2 >= 0);
 
-        CPPUNIT_ASSERT(s0 != s1);
-        CPPUNIT_ASSERT(s1 != s2);
+    CPPUNIT_ASSERT(s0 != s1);
+    CPPUNIT_ASSERT(s1 != s2);
 
-        // Close s1 and create it anew
-        fakeSocketClose(s1);
+    // Close s1 and create it anew
+    fakeSocketClose(s1);
 
-        s1 = fakeSocketSocket();
-        CPPUNIT_ASSERT(s1 >= 0);
+    s1 = fakeSocketSocket();
+    CPPUNIT_ASSERT(s1 >= 0);
 
-        // Listen on s0
-        int rc = fakeSocketListen(s0);
-        CPPUNIT_ASSERT(rc != -1);
+    // Listen on s0
+    int rc = fakeSocketListen(s0);
+    CPPUNIT_ASSERT(rc != -1);
 
-        // Start a thread that accepts two connections to s0, producing sockets s3 and s4.
-        int s3 = -1, s4 = -1;
-        std::thread t0([&] {
-                s3 = fakeSocketAccept4(s0, 0);
-                CPPUNIT_ASSERT(s3 >= 0);
+    // Start a thread that accepts two connections to s0, producing sockets s3 and s4.
+    int s3 = -1, s4 = -1;
+    std::thread t0([&] {
+            s3 = fakeSocketAccept4(s0, 0);
+            CPPUNIT_ASSERT(s3 >= 0);
 
-                s4 = fakeSocketAccept4(s0, 0);
-                CPPUNIT_ASSERT(s4 >= 0);
-            });
+            s4 = fakeSocketAccept4(s0, 0);
+            CPPUNIT_ASSERT(s4 >= 0);
+        });
 
-        // Connect s1 and s2 to s0 (that is, to the sockets produced by accepting connections to
-        // s0).
-        rc = fakeSocketConnect(s1, s0);
-        CPPUNIT_ASSERT(rc != -1);
+    // Connect s1 and s2 to s0 (that is, to the sockets produced by accepting connections to
+    // s0).
+    rc = fakeSocketConnect(s1, s0);
+    CPPUNIT_ASSERT(rc != -1);
 
-        rc = fakeSocketConnect(s2, s0);
-        CPPUNIT_ASSERT(rc != -1);
+    rc = fakeSocketConnect(s2, s0);
+    CPPUNIT_ASSERT(rc != -1);
 
-        // Verify that we got the accepts.
-        t0.join();
-        CPPUNIT_ASSERT(s3 != -1);
-        CPPUNIT_ASSERT(s4 != -1);
+    // Verify that we got the accepts.
+    t0.join();
+    CPPUNIT_ASSERT(s3 != -1);
+    CPPUNIT_ASSERT(s4 != -1);
 
-        // s1 should now be connected to s3, and s2 to s4.
-        CPPUNIT_ASSERT(fakeSocketPeer(s1) == s3);
-        CPPUNIT_ASSERT(fakeSocketPeer(s3) == s1);
-        CPPUNIT_ASSERT(fakeSocketPeer(s2) == s4);
-        CPPUNIT_ASSERT(fakeSocketPeer(s4) == s2);
+    // s1 should now be connected to s3, and s2 to s4.
+    CPPUNIT_ASSERT(fakeSocketPeer(s1) == s3);
+    CPPUNIT_ASSERT(fakeSocketPeer(s3) == s1);
+    CPPUNIT_ASSERT(fakeSocketPeer(s2) == s4);
+    CPPUNIT_ASSERT(fakeSocketPeer(s4) == s2);
 
-        // Some writing and reading
-        rc = fakeSocketWrite(s1, "hello", 5);
-        CPPUNIT_ASSERT(rc != -1);
+    // Some writing and reading
+    rc = fakeSocketWrite(s1, "hello", 5);
+    CPPUNIT_ASSERT(rc != -1);
 
-        rc = fakeSocketWrite(s1, "there", 5);
-        CPPUNIT_ASSERT(rc != -1);
+    rc = fakeSocketWrite(s1, "greetings", 9);
+    CPPUNIT_ASSERT(rc != -1);
 
-        rc = fakeSocketWrite(s2, "moin", 4);
-        CPPUNIT_ASSERT(rc != -1);
+    rc = fakeSocketWrite(s2, "moin", 4);
+    CPPUNIT_ASSERT(rc != -1);
 
-        char buf[100];
+    char buf[100];
 
-        rc = fakeSocketRead(s3, buf, 100);
-        CPPUNIT_ASSERT(rc != -1);
-        CPPUNIT_ASSERT(rc > 0);
+    rc = fakeSocketAvailableDataLength(s3);
+    CPPUNIT_ASSERT(rc == 5);
 
-        rc = fakeSocketRead(s4, buf, 100);
-        CPPUNIT_ASSERT(rc != -1);
-        CPPUNIT_ASSERT(rc > 0);
+    rc = fakeSocketRead(s3, buf, 100);
+    CPPUNIT_ASSERT(rc == 5);
 
-        rc = fakeSocketWrite(s3, "goodbye", 7);
-        CPPUNIT_ASSERT(rc != -1);
-        CPPUNIT_ASSERT(rc > 0);
+    rc = fakeSocketAvailableDataLength(s3);
+    CPPUNIT_ASSERT(rc == 9);
 
-        rc = fakeSocketRead(s1, buf, 4);
-        CPPUNIT_ASSERT(rc == -1);
+    rc = fakeSocketRead(s4, buf, 100);
+    CPPUNIT_ASSERT(rc == 4);
 
-        rc = fakeSocketRead(s1, buf, 100);
-        CPPUNIT_ASSERT(rc != -1);
-        CPPUNIT_ASSERT(rc > 0);
+    rc = fakeSocketWrite(s3, "goodbye", 7);
+    CPPUNIT_ASSERT(rc > 0);
 
-        // Close s3. Reading from s1 should then return an EOF indication (0). 
-        fakeSocketClose(s3);
-        rc = fakeSocketRead(s1, buf, 100);
-        CPPUNIT_ASSERT(rc == 0);
+    rc = fakeSocketRead(s1, buf, 4);
+    CPPUNIT_ASSERT(rc == -1);
+    CPPUNIT_ASSERT(errno == EAGAIN); // Note: not really the right errno, but what else? See
+                                     // FakeSocket.cpp.
 
-        rc = fakeSocketRead(s1, buf, 100);
-        CPPUNIT_ASSERT(rc == 0);
+    rc = fakeSocketRead(s1, buf, 100);
+    CPPUNIT_ASSERT(rc > 0);
 
-        // Test the "pipe" functionality, that creates an already connected socket pair.
-        int pipe[2];
-        rc = fakeSocketPipe2(pipe);
-        CPPUNIT_ASSERT(rc == 0);
+    // Close s3. Reading from s1 should then return an EOF indication (0).
+    fakeSocketClose(s3);
 
-        rc = fakeSocketWrite(pipe[0], "x", 1);
-        CPPUNIT_ASSERT(rc == 1);
+    rc = fakeSocketAvailableDataLength(s1);
+    CPPUNIT_ASSERT(rc == 0);
 
-        rc = fakeSocketRead(pipe[1], buf, 1);
-        CPPUNIT_ASSERT(rc == 1);
+    rc = fakeSocketRead(s1, buf, 100);
+    CPPUNIT_ASSERT(rc == 0);
 
-        CPPUNIT_ASSERT(buf[0] == 'x');
+    rc = fakeSocketAvailableDataLength(s1);
+    CPPUNIT_ASSERT(rc == 0);
 
-        rc = fakeSocketWrite(pipe[1], "y", 1);
-        CPPUNIT_ASSERT(rc == 1);
+    rc = fakeSocketRead(s1, buf, 100);
+    CPPUNIT_ASSERT(rc == 0);
 
-        rc = fakeSocketRead(pipe[0], buf, 1);
-        CPPUNIT_ASSERT(rc == 1);
-        CPPUNIT_ASSERT(buf[0] == 'y');
+    // Test the "pipe" functionality, that creates an already connected socket pair.
+    int pipe[2];
+    rc = fakeSocketPipe2(pipe);
+    CPPUNIT_ASSERT(rc == 0);
 
-        rc = fakeSocketWrite(pipe[0], "z", 1);
-        CPPUNIT_ASSERT(rc == 1);
+    rc = fakeSocketWrite(pipe[0], "x", 1);
+    CPPUNIT_ASSERT(rc == 1);
 
-        rc = fakeSocketShutdown(pipe[0]);
-        CPPUNIT_ASSERT(rc == 0);
+    rc = fakeSocketAvailableDataLength(pipe[1]);
+    CPPUNIT_ASSERT(rc == 1);
 
-        rc = fakeSocketRead(pipe[1], buf, 1);
-        CPPUNIT_ASSERT(rc == 1);
-        CPPUNIT_ASSERT(buf[0] == 'z');
+    rc = fakeSocketRead(pipe[1], buf, 1);
+    CPPUNIT_ASSERT(rc == 1);
 
-        rc = fakeSocketWrite(pipe[0], "a", 1);
-        CPPUNIT_ASSERT(rc == -1);
-        CPPUNIT_ASSERT(errno == EPIPE);
+    CPPUNIT_ASSERT(buf[0] == 'x');
 
-        rc = fakeSocketRead(pipe[0], buf, 1);
-        CPPUNIT_ASSERT(rc == 0);
+    rc = fakeSocketWrite(pipe[1], "y", 1);
+    CPPUNIT_ASSERT(rc == 1);
 
-        rc = fakeSocketRead(pipe[0], buf, 1);
-        CPPUNIT_ASSERT(rc == 0);
-    }
-    catch (const std::exception& exception)
-    {
-        CPPUNIT_FAIL(exception.what());
-    }
-}
+    rc = fakeSocketRead(pipe[0], buf, 1);
+    CPPUNIT_ASSERT(rc == 1);
+    CPPUNIT_ASSERT(buf[0] == 'y');
+
+    rc = fakeSocketWrite(pipe[0], "z", 1);
+    CPPUNIT_ASSERT(rc == 1);
 
+    rc = fakeSocketShutdown(pipe[0]);
+    CPPUNIT_ASSERT(rc == 0);
+
+    rc = fakeSocketRead(pipe[1], buf, 1);
+    CPPUNIT_ASSERT(rc == 1);
+    CPPUNIT_ASSERT(buf[0] == 'z');
+
+    rc = fakeSocketWrite(pipe[0], "a", 1);
+    CPPUNIT_ASSERT(rc == -1);
+    CPPUNIT_ASSERT(errno == EPIPE);
+
+    rc = fakeSocketRead(pipe[0], buf, 1);
+    CPPUNIT_ASSERT(rc == 0);
+
+    rc = fakeSocketRead(pipe[0], buf, 1);
+    CPPUNIT_ASSERT(rc == 0);
+}
 
 CPPUNIT_TEST_SUITE_REGISTRATION(FakeSocketTest);
 


More information about the Libreoffice-commits mailing list