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 PetscViewer viewer = (PetscViewer)ctx; 10c522b486SVaclav Hapla 11c522b486SVaclav Hapla PetscFunctionBegin; 12c522b486SVaclav Hapla if (!value) { 139566063dSJacob Faibussowitsch PetscCall(PetscViewerASCIIPrintf(viewer,"* Removing option: %s\n",name)); 14c522b486SVaclav Hapla } else if (!value[0]) { 159566063dSJacob Faibussowitsch PetscCall(PetscViewerASCIIPrintf(viewer,"* Setting option: %s (no value)\n",name)); 16c522b486SVaclav Hapla } else { 179566063dSJacob Faibussowitsch PetscCall(PetscViewerASCIIPrintf(viewer,"* Setting option: %s = %s\n",name,value)); 18c522b486SVaclav Hapla } 19c522b486SVaclav Hapla PetscFunctionReturn(0); 20c522b486SVaclav Hapla } 21c522b486SVaclav Hapla 22c522b486SVaclav Hapla int main(int argc,char **argv) 23c522b486SVaclav Hapla { 24c522b486SVaclav Hapla PetscViewer viewer=NULL; 25c522b486SVaclav Hapla PetscViewerFormat format; 26c522b486SVaclav Hapla 27*327415f7SBarry Smith PetscFunctionBeginUser; 289566063dSJacob Faibussowitsch PetscCall(PetscInitialize(&argc,&argv,"ex55options",help)); 299566063dSJacob Faibussowitsch PetscCall(PetscOptionsInsertString(NULL,"-option1 1 -option2 -option3 value3")); 309566063dSJacob Faibussowitsch PetscCall(PetscOptionsGetViewer(PETSC_COMM_WORLD,NULL,NULL,"-options_monitor_viewer",&viewer,&format,NULL)); 31c522b486SVaclav Hapla if (viewer) { 329566063dSJacob Faibussowitsch PetscCall(PetscViewerPushFormat(viewer,format)); 339566063dSJacob Faibussowitsch PetscCall(PetscOptionsMonitorSet(PetscOptionsMonitorCustom,viewer,NULL)); 349566063dSJacob Faibussowitsch PetscCall(PetscViewerPopFormat(viewer)); 359566063dSJacob Faibussowitsch PetscCall(PetscViewerDestroy(&viewer)); 36c522b486SVaclav Hapla } 379566063dSJacob Faibussowitsch PetscCall(PetscOptionsInsertString(NULL,"-option4 value4 -option5")); 389566063dSJacob Faibussowitsch PetscCall(PetscFinalize()); 39b122ec5aSJacob Faibussowitsch return 0; 40c522b486SVaclav Hapla } 41c522b486SVaclav Hapla 42c522b486SVaclav Hapla /*TEST 43c522b486SVaclav Hapla 44c522b486SVaclav Hapla testset: 45c522b486SVaclav Hapla localrunfiles: ex55options .petscrc petscrc 46660278c0SBarry Smith filter: egrep -v -e "(options_left)" 47c522b486SVaclav Hapla args: -options_left 0 -options_view -options_monitor_viewer ascii 48c522b486SVaclav Hapla args: -skip_petscrc {{0 1}separate output} -options_monitor_cancel {{0 1}separate output} 49c522b486SVaclav Hapla test: 50c522b486SVaclav Hapla suffix: 1 51c522b486SVaclav Hapla test: 52c522b486SVaclav Hapla suffix: 2 53c522b486SVaclav Hapla args: -options_monitor 54c522b486SVaclav Hapla test: 55c522b486SVaclav Hapla suffix: 3 56c522b486SVaclav Hapla args: -options_monitor -option_cmd_1 option_cmd_1_val -option_cmd_2 57c522b486SVaclav Hapla test: 58c522b486SVaclav Hapla # test effect of -skip_petscrc in ex55options file 5998fcc90bSVaclav Hapla suffix: 4 60c522b486SVaclav Hapla localrunfiles: ex55options .petscrc petscrc 61660278c0SBarry Smith filter: egrep -v -e "(options_left)" 62c522b486SVaclav Hapla args: -options_left 0 -options_view -options_monitor 6398fcc90bSVaclav Hapla testset: 64c524e44cSVaclav Hapla # test -help / -help intro / -version from command line 6598fcc90bSVaclav Hapla localrunfiles: ex55options .petscrc petscrc 6669a0b2a7SSatish Balay filter: egrep -e "(version|help|^See)" 67c524e44cSVaclav Hapla args: -options_left -options_view -options_monitor 6898fcc90bSVaclav Hapla test: 6998fcc90bSVaclav Hapla suffix: 5a 7098fcc90bSVaclav Hapla args: -help 7198fcc90bSVaclav Hapla test: 7298fcc90bSVaclav Hapla suffix: 5b 7398fcc90bSVaclav Hapla args: -help intro 7498fcc90bSVaclav Hapla test: 7598fcc90bSVaclav Hapla suffix: 5c 7698fcc90bSVaclav Hapla args: -version 77c524e44cSVaclav Hapla testset: 78c524e44cSVaclav Hapla # test -help / -help intro / -version from file 79c524e44cSVaclav Hapla localrunfiles: ex55options rc_help rc_help_intro rc_version 80c524e44cSVaclav Hapla filter: egrep -e "(version|help|^See)" 81c524e44cSVaclav Hapla args: -skip_petscrc 82c524e44cSVaclav Hapla args: -options_left -options_view -options_monitor 83c524e44cSVaclav Hapla test: 84c524e44cSVaclav Hapla suffix: 6a 85c524e44cSVaclav Hapla args: -options_file rc_help 86c524e44cSVaclav Hapla test: 87c524e44cSVaclav Hapla suffix: 6b 88c524e44cSVaclav Hapla args: -options_file rc_help_intro 89c524e44cSVaclav Hapla test: 90c524e44cSVaclav Hapla suffix: 6c 91c524e44cSVaclav Hapla args: -options_file rc_version 92c522b486SVaclav Hapla 93c522b486SVaclav Hapla TEST*/ 94