void simple_test() { time_map_type * time_map = time_map_alloc( ); test_work_area_type * work_area = test_work_area_alloc("enkf_time_map" , true); const char * mapfile = "map"; test_assert_true( time_map_update( time_map , 0 , 100 ) ); test_assert_true( time_map_update( time_map , 1 , 200 ) ); test_assert_true( time_map_update( time_map , 1 , 200 ) ); test_assert_false( time_map_update( time_map , 1 , 250 ) ); test_assert_true( time_map_equal( time_map , time_map ) ); time_map_fwrite( time_map , mapfile); { time_map_type * time_map2 = time_map_alloc( ); test_assert_false( time_map_equal( time_map , time_map2 ) ); time_map_fread( time_map2 , mapfile ); test_assert_true( time_map_equal( time_map , time_map2 ) ); time_map_free( time_map2 ); } { time_t mtime1 = util_file_mtime( mapfile ); sleep(2); time_map_fwrite( time_map , mapfile); test_assert_time_t_equal( mtime1 , util_file_mtime( mapfile ) ); time_map_update( time_map , 2 , 300 ); time_map_fwrite( time_map , mapfile); test_assert_time_t_not_equal( mtime1 , util_file_mtime( mapfile ) ); } test_work_area_free( work_area ); }
void thread_test() { time_map_type * time_map = time_map_alloc( ); { int pool_size = 1000; thread_pool_type * tp = thread_pool_alloc( pool_size/2 , true ); thread_pool_add_job( tp , update_time_map , time_map ); thread_pool_join(tp); thread_pool_free(tp); } { int i; for (i=0; i < MAP_SIZE; i++) test_assert_true( time_map_iget( time_map , i ) == i ); } time_map_free( time_map ); }
void ecl_test( const char * ecl_case ) { ecl_sum_type * ecl_sum = ecl_sum_fread_alloc_case( ecl_case , ":"); time_t start_time = ecl_sum_get_start_time( ecl_sum ); time_t end_time = ecl_sum_get_end_time( ecl_sum ); time_map_type * ecl_map = time_map_alloc( ); test_assert_true( time_map_summary_update( ecl_map , ecl_sum ) ); test_assert_true( time_map_summary_update( ecl_map , ecl_sum ) ); test_assert_time_t_equal( time_map_get_start_time( ecl_map ) , start_time ); test_assert_time_t_equal( time_map_get_end_time( ecl_map ) , end_time ); test_assert_double_equal( time_map_get_end_days( ecl_map ) , ecl_sum_get_sim_length( ecl_sum )); time_map_clear( ecl_map ); time_map_update( ecl_map , 1 , 256 ); test_assert_false( time_map_summary_update( ecl_map , ecl_sum )); time_map_free( ecl_map ); ecl_sum_free( ecl_sum ); }
void enkf_fs_close( enkf_fs_type * fs ) { enkf_fs_fsync( fs ); enkf_fs_fwrite_misfit( fs ); enkf_fs_free_driver( fs->dynamic_forecast ); enkf_fs_free_driver( fs->dynamic_analyzed ); enkf_fs_free_driver( fs->parameter ); enkf_fs_free_driver( fs->eclipse_static ); enkf_fs_free_driver( fs->index ); util_safe_free( fs->case_name ); util_safe_free( fs->root_path ); util_safe_free( fs->mount_point ); path_fmt_free( fs->case_fmt ); path_fmt_free( fs->case_member_fmt ); path_fmt_free( fs->case_tstep_fmt ); path_fmt_free( fs->case_tstep_member_fmt ); time_map_free( fs->time_map ); free( fs ); }
static void enkf_fs_umount( enkf_fs_type * fs ) { if (!fs->read_only) { enkf_fs_fsync( fs ); enkf_fs_fwrite_misfit( fs ); } if (fs->lock_fd > 0) { close( fs->lock_fd ); // Closing the lock_file file descriptor - and releasing the lock. util_unlink_existing( fs->lock_file ); } { int refcount = fs->refcount; if (refcount == 0) { enkf_fs_free_driver( fs->dynamic_forecast ); enkf_fs_free_driver( fs->dynamic_analyzed ); enkf_fs_free_driver( fs->parameter ); enkf_fs_free_driver( fs->eclipse_static ); enkf_fs_free_driver( fs->index ); util_safe_free( fs->case_name ); util_safe_free( fs->root_path ); util_safe_free(fs->lock_file); util_safe_free( fs->mount_point ); path_fmt_free( fs->case_fmt ); path_fmt_free( fs->case_member_fmt ); path_fmt_free( fs->case_tstep_fmt ); path_fmt_free( fs->case_tstep_member_fmt ); state_map_free( fs->state_map ); time_map_free( fs->time_map ); cases_config_free( fs->cases_config ); free( fs ); } else util_abort("%s: internal fuckup - tried to umount a filesystem with refcount:%d\n",__func__ , refcount); } }