src/server/plugins/postgresql/pgtest.c

branch
webdav
changeset 294
277a5896a2ec
parent 293
d3899857a81d
child 295
73a1243fce15
--- a/src/server/plugins/postgresql/pgtest.c	Sun Apr 17 12:04:41 2022 +0200
+++ b/src/server/plugins/postgresql/pgtest.c	Mon Apr 18 10:53:13 2022 +0200
@@ -64,6 +64,8 @@
         ucx_test_register(suite, test_pg_vfs_open);
         ucx_test_register(suite, test_pg_vfs_io);
         ucx_test_register(suite, test_pg_vfs_stat);
+        ucx_test_register(suite, test_pg_vfs_mkdir);
+        ucx_test_register(suite, test_pg_vfs_unlink);
         
         PGresult *result = PQexec(test_connection, "BEGIN");
         PQclear(result);
@@ -113,6 +115,8 @@
     vfs_close(file);
     
     UCX_TEST_END;
+    
+    testutil_destroy_session(sn);
 }
 
 UCX_TEST(test_pg_vfs_io) {
@@ -161,6 +165,7 @@
     
     UCX_TEST_END;
     
+    testutil_destroy_session(sn);
 }
 
 UCX_TEST(test_pg_vfs_stat) {
@@ -201,8 +206,44 @@
     UCX_TEST_ASSERT(testfail != 0, "stat 3 should fail");
     
     UCX_TEST_END;
+    
+    testutil_destroy_session(sn);
 }
 
 UCX_TEST(test_pg_vfs_mkdir) {
     
 }
+
+UCX_TEST(test_pg_vfs_unlink) {
+    Session *sn = testutil_session();
+    Request *rq = testutil_request(sn->pool, "PUT", "/");
+    rq->vfs = create_test_pgvfs(sn, rq);
+    VFSContext *vfs = vfs_request_context(sn, rq);
+    
+    UCX_TEST_BEGIN;
+    
+    SYS_FILE f1 = vfs_open(vfs, "/test_unlink1", O_WRONLY|O_CREAT);
+    UCX_TEST_ASSERT(f1, "cannot create test file");
+    system_fwrite(f1, "test", 4);
+    
+    PgFile *pgfile = f1->data;
+    Oid oid = pgfile->oid;
+    
+    vfs_close(f1);
+    
+    int r = vfs_unlink(vfs, "/test_unlink1");
+    UCX_TEST_ASSERT(r == 0, "unlink failed");
+    
+    f1 = vfs_open(vfs, "/test_unlink1", O_RDONLY);
+    UCX_TEST_ASSERT(f1 == NULL, "test file not deleted");
+    
+    int pgfd = lo_open(test_connection, oid, INV_READ);
+    UCX_TEST_ASSERT(pgfd < 0, "large object not deleted");
+    
+    r = vfs_unlink(vfs, "/test_unlink1");
+    UCX_TEST_ASSERT(r, "unlink should fail");
+    
+    UCX_TEST_END;
+    
+    testutil_destroy_session(sn);
+}

mercurial