@@ -1219,6 +1219,41 @@ static void test_xthread(abts_case *tc, void *data)
1219
1219
apr_file_close (f );
1220
1220
}
1221
1221
1222
+ static void test_datasync_on_file (abts_case * tc , void * data )
1223
+ {
1224
+ apr_status_t rv ;
1225
+ apr_file_t * f ;
1226
+ const char * fname = DIRNAME "/testtest_datasync.dat" ;
1227
+ apr_size_t bytes_written ;
1228
+
1229
+ apr_file_remove (fname , p );
1230
+
1231
+ rv = apr_file_open (& f , fname , APR_FOPEN_CREATE | APR_FOPEN_WRITE ,
1232
+ APR_FPROT_OS_DEFAULT , p );
1233
+ APR_ASSERT_SUCCESS (tc , "open test file for writing" , rv );
1234
+ rv = apr_file_write_full (f , "abcdef" , 6 , & bytes_written );
1235
+ APR_ASSERT_SUCCESS (tc , "write to file" , rv );
1236
+ rv = apr_file_datasync (f );
1237
+ APR_ASSERT_SUCCESS (tc , "sync file contents" , rv );
1238
+ apr_file_close (f );
1239
+
1240
+ apr_file_remove (fname , p );
1241
+ }
1242
+
1243
+ static void test_datasync_on_stream (abts_case * tc , void * data )
1244
+ {
1245
+ apr_status_t rv ;
1246
+ apr_file_t * f ;
1247
+ apr_size_t bytes_written ;
1248
+
1249
+ rv = apr_file_open_stdout (& f , p );
1250
+ APR_ASSERT_SUCCESS (tc , "open stdout" , rv );
1251
+ rv = apr_file_write_full (f , "abcdef\b\b\b\b\b\b\b" , 12 , & bytes_written );
1252
+ APR_ASSERT_SUCCESS (tc , "write to stdout" , rv );
1253
+ rv = apr_file_datasync (f );
1254
+ APR_ASSERT_SUCCESS (tc , "sync stdout" , rv );
1255
+ }
1256
+
1222
1257
abts_suite * testfile (abts_suite * suite )
1223
1258
{
1224
1259
suite = ADD_SUITE (suite )
@@ -1263,6 +1298,8 @@ abts_suite *testfile(abts_suite *suite)
1263
1298
abts_run_test (suite , test_fail_read_flush , NULL );
1264
1299
abts_run_test (suite , test_buffer_set_get , NULL );
1265
1300
abts_run_test (suite , test_xthread , NULL );
1301
+ abts_run_test (suite , test_datasync_on_file , NULL );
1302
+ abts_run_test (suite , test_datasync_on_stream , NULL );
1266
1303
1267
1304
return suite ;
1268
1305
}
0 commit comments