1c522b486SVaclav Hapla 2c522b486SVaclav Hapla static char help[] = "Tests options database monitoring and precedence.\n\n"; 3c522b486SVaclav Hapla 4c522b486SVaclav Hapla #include <petscsys.h> 5c522b486SVaclav Hapla #include <petscviewer.h> 6c522b486SVaclav Hapla 7c522b486SVaclav Hapla PetscErrorCode PetscOptionsMonitorCustom(const char name[],const char value[],void *ctx) 8c522b486SVaclav Hapla { 9c522b486SVaclav Hapla PetscErrorCode ierr; 10c522b486SVaclav Hapla PetscViewer viewer = (PetscViewer)ctx; 11c522b486SVaclav Hapla 12c522b486SVaclav Hapla PetscFunctionBegin; 13c522b486SVaclav Hapla if (!value) { 14c522b486SVaclav Hapla ierr = PetscViewerASCIIPrintf(viewer,"* Removing option: %s\n",name,value);CHKERRQ(ierr); 15c522b486SVaclav Hapla } else if (!value[0]) { 16c522b486SVaclav Hapla ierr = PetscViewerASCIIPrintf(viewer,"* Setting option: %s (no value)\n",name);CHKERRQ(ierr); 17c522b486SVaclav Hapla } else { 18c522b486SVaclav Hapla ierr = PetscViewerASCIIPrintf(viewer,"* Setting option: %s = %s\n",name,value);CHKERRQ(ierr); 19c522b486SVaclav Hapla } 20c522b486SVaclav Hapla PetscFunctionReturn(0); 21c522b486SVaclav Hapla } 22c522b486SVaclav Hapla 23c522b486SVaclav Hapla int main(int argc,char **argv) 24c522b486SVaclav Hapla { 25c522b486SVaclav Hapla PetscErrorCode ierr; 26c522b486SVaclav Hapla PetscViewer viewer=NULL; 27c522b486SVaclav Hapla PetscViewerFormat format; 28c522b486SVaclav Hapla 29c522b486SVaclav Hapla ierr = PetscInitialize(&argc,&argv,"ex55options",help);if (ierr) return ierr; 30c522b486SVaclav Hapla ierr = PetscOptionsInsertString(NULL,"-option1 1 -option2 -option3 value3");CHKERRQ(ierr); 31c522b486SVaclav Hapla ierr = PetscOptionsGetViewer(PETSC_COMM_WORLD,NULL,NULL,"-options_monitor_viewer",&viewer,&format,NULL);CHKERRQ(ierr); 32c522b486SVaclav Hapla if (viewer) { 33c522b486SVaclav Hapla ierr = PetscViewerPushFormat(viewer,format);CHKERRQ(ierr); 34c522b486SVaclav Hapla ierr = PetscOptionsMonitorSet(PetscOptionsMonitorCustom,viewer,NULL);CHKERRQ(ierr); 35c522b486SVaclav Hapla ierr = PetscViewerPopFormat(viewer);CHKERRQ(ierr); 36c522b486SVaclav Hapla ierr = PetscViewerDestroy(&viewer);CHKERRQ(ierr); 37c522b486SVaclav Hapla } 38c522b486SVaclav Hapla ierr = PetscOptionsInsertString(NULL,"-option4 value4 -option5");CHKERRQ(ierr); 39c522b486SVaclav Hapla ierr = PetscFinalize(); 40c522b486SVaclav Hapla return ierr; 41c522b486SVaclav Hapla } 42c522b486SVaclav Hapla 43c522b486SVaclav Hapla /*TEST 44c522b486SVaclav Hapla 45c522b486SVaclav Hapla testset: 46c522b486SVaclav Hapla localrunfiles: ex55options .petscrc petscrc 4798fcc90bSVaclav Hapla filter: egrep -v -e "(malloc|nox|display|saws_port|vecscatter|options_left|check_pointer_intensity|cuda_initialize|error_output_stdout|use_gpu_aware_mpi)" 48c522b486SVaclav Hapla args: -options_left 0 -options_view -options_monitor_viewer ascii 49c522b486SVaclav Hapla args: -skip_petscrc {{0 1}separate output} -options_monitor_cancel {{0 1}separate output} 50c522b486SVaclav Hapla test: 51c522b486SVaclav Hapla suffix: 1 52c522b486SVaclav Hapla test: 53c522b486SVaclav Hapla suffix: 2 54c522b486SVaclav Hapla args: -options_monitor 55c522b486SVaclav Hapla test: 56c522b486SVaclav Hapla suffix: 3 57c522b486SVaclav Hapla args: -options_monitor -option_cmd_1 option_cmd_1_val -option_cmd_2 58c522b486SVaclav Hapla test: 59c522b486SVaclav Hapla # test effect of -skip_petscrc in ex55options file 6098fcc90bSVaclav Hapla suffix: 4 61c522b486SVaclav Hapla localrunfiles: ex55options .petscrc petscrc 6298fcc90bSVaclav Hapla filter: egrep -v -e "(malloc|nox|display|saws_port|vecscatter|options_left|check_pointer_intensity|cuda_initialize|error_output_stdout|use_gpu_aware_mpi)" 63c522b486SVaclav Hapla args: -options_left 0 -options_view -options_monitor 6498fcc90bSVaclav Hapla testset: 65*c524e44cSVaclav Hapla # test -help / -help intro / -version from command line 6698fcc90bSVaclav Hapla localrunfiles: ex55options .petscrc petscrc 6769a0b2a7SSatish Balay filter: egrep -e "(version|help|^See)" 68*c524e44cSVaclav Hapla args: -options_left -options_view -options_monitor 6998fcc90bSVaclav Hapla test: 7098fcc90bSVaclav Hapla suffix: 5a 7198fcc90bSVaclav Hapla args: -help 7298fcc90bSVaclav Hapla test: 7398fcc90bSVaclav Hapla suffix: 5b 7498fcc90bSVaclav Hapla args: -help intro 7598fcc90bSVaclav Hapla test: 7698fcc90bSVaclav Hapla suffix: 5c 7798fcc90bSVaclav Hapla args: -version 78*c524e44cSVaclav Hapla testset: 79*c524e44cSVaclav Hapla # test -help / -help intro / -version from file 80*c524e44cSVaclav Hapla localrunfiles: ex55options rc_help rc_help_intro rc_version 81*c524e44cSVaclav Hapla filter: egrep -e "(version|help|^See)" 82*c524e44cSVaclav Hapla args: -skip_petscrc 83*c524e44cSVaclav Hapla args: -options_left -options_view -options_monitor 84*c524e44cSVaclav Hapla test: 85*c524e44cSVaclav Hapla suffix: 6a 86*c524e44cSVaclav Hapla args: -options_file rc_help 87*c524e44cSVaclav Hapla test: 88*c524e44cSVaclav Hapla suffix: 6b 89*c524e44cSVaclav Hapla args: -options_file rc_help_intro 90*c524e44cSVaclav Hapla test: 91*c524e44cSVaclav Hapla suffix: 6c 92*c524e44cSVaclav Hapla args: -options_file rc_version 93c522b486SVaclav Hapla 94c522b486SVaclav Hapla TEST*/ 95