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