utest: add SyncWaitByTime 28/172928/2
authorSangjin.Lee <lsj119@samsung.com>
Mon, 19 Mar 2018 02:17:24 +0000 (11:17 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Mon, 19 Mar 2018 06:54:28 +0000 (06:54 +0000)
Change-Id: I3d84d17209aef2db2ddef6b5c3f7898d58f9bab9

utests/src/ut_wayland_tbm.cpp

index 5958369..10f2077 100644 (file)
@@ -876,10 +876,56 @@ TEST_F(UtWlTbm, SyncWait)
        wl_tbm_test_timeline_increase(wl_tbm_test, wl_buf);
        ASSERT_EQ(CheckServerError(), 0);
 
-       ASSERT_EQ(tbm_sync_fence_wait(fence, 1), 0);
+       ASSERT_EQ(tbm_sync_fence_wait(fence, 1), 1);
 
        wayland_tbm_client_destroy_buffer(wl_tbm_client, wl_buf);
        tbm_surface_destroy(tbm_surf);
        close(fence);
        close(td);
-}
\ No newline at end of file
+}
+
+TEST_F(UtWlTbm, SyncWaitByTime)
+{
+       tbm_fd td, fence;
+       tbm_surface_h tbm_surf;
+       struct wl_buffer *wl_buf;
+       int cnt = 0, ret;
+
+       td = tbm_sync_timeline_create();
+       ASSERT_NE(td, -1);
+
+       tbm_surf = tbm_surface_create(100, 200, TBM_FORMAT_ARGB8888);
+       ASSERT_NE(tbm_surf, nullptr);
+
+       wl_buf = wayland_tbm_client_create_buffer(wl_tbm_client, tbm_surf);
+       ASSERT_NE(wl_buf, nullptr);
+       ASSERT_EQ(CheckServerError(), 0);
+
+       fence = tbm_sync_fence_create(td, "test", 10);
+       ASSERT_NE(wl_buf, -1);
+
+       wayland_tbm_client_set_sync_timeline(wl_tbm_client, wl_buf, td);
+       ASSERT_EQ(CheckServerError(), 0);
+
+       while(cnt < 20) {
+               ret = tbm_sync_fence_wait(fence, 1);
+
+               if (ret == 1) {
+                       break;
+               } else if (ret == -1) {
+                       printf("increase cnt to %d\n", ++cnt);
+                       wl_tbm_test_timeline_increase(wl_tbm_test, wl_buf);
+                       ASSERT_EQ(CheckServerError(), 0);
+                       continue;
+               } else {
+                       break;
+               }
+       }
+
+       ASSERT_EQ(ret, 1);
+
+       wayland_tbm_client_destroy_buffer(wl_tbm_client, wl_buf);
+       tbm_surface_destroy(tbm_surf);
+       close(fence);
+       close(td);
+}