XBT_LOG_NEW_DEFAULT_CATEGORY(test,"Simple Property example");
-int master(int argc, char *argv[]);
-int slave(int argc, char *argv[]);
+int alice(int argc, char *argv[]);
+int bob(int argc, char *argv[]);
-
-int slave(int argc, char *argv[]) {
+int alice(int argc, char *argv[]) {
gras_init(&argc,argv);
/* Get the properties */
- xbt_dict_t props = gras_process_properties();
+ xbt_dict_t process_props = gras_process_properties();
+ xbt_dict_t host_props = gras_os_host_properties();
+
xbt_dict_cursor_t cursor = NULL;
char *key,*data;
+ const char *value;
+
+ /* Let the other process change the host props */
+ gras_os_sleep(1);
+
+ INFO0("== Dump all the properties of current host");
+ xbt_dict_foreach(host_props,cursor,key,data)
+ INFO2(" Host property: '%s' has value: '%s'",key,data);
- /* Print the properties of the workstation 1 */
- xbt_dict_foreach(props,cursor,key,data) {
- INFO2("Process property: %s has value: %s",key,data);
- }
+ INFO0("== Dump all the properties of alice");
+ xbt_dict_foreach(process_props,cursor,key,data)
+ if (!strncmp(key,"SG_TEST_",8))
+ INFO2(" Process property: '%s' has value: '%s'",key,data);
- /* Try to get a property that does not exist */
- const char *noexist="Nonexisting";
- const char *value = gras_process_property_value(noexist);
- if ( value == NULL)
- INFO1("Process property: %s is undefined", noexist);
- else
- INFO2("Process property: %s has value: %s", noexist, value);
+ INFO0("== Try to get a process property that does not exist");
+ value = gras_process_property_value("Nonexisting");
+ xbt_assert0(!value, "nonexisting property exists!!");
- /* Modify an existing property. First check it exists */
- INFO0("Trying to modify a process property");
- const char *exist="otherprop";
- value = gras_process_property_value(exist);
- if (value == NULL)
- INFO1("\tProperty: %s is undefined", exist);
- else {
- INFO2("\tProperty: %s old value: %s", exist, value);
- xbt_dict_set(props, exist, xbt_strdup("newValue"), free);
- }
+ /* Modify an existing property. First check it exists */
+ INFO0("== Trying to modify a process property");
+ value = gras_process_property_value("new prop");
+ xbt_assert0(!value,"Property 'new prop' exists before I add it!");
+ xbt_dict_set(process_props, "new prop", xbt_strdup("new value"), xbt_free_f);
- /* Test if we have changed the value */
- value = gras_process_property_value(exist);
- if (value == NULL)
- INFO1("\tProperty: %s is undefined", exist);
- else
- INFO2("\tProperty: %s new value: %s", exist, value);
+ /* Test if we have changed the value */
+ value = gras_process_property_value("new prop");
+ xbt_assert1(!strcmp(value,"new value"), "New property does have the value I've set ('%s' != 'new value')",value);
- gras_os_sleep(1);
gras_exit();
return 0;
}
-int master(int argc, char *argv[]) {
+int bob(int argc, char *argv[]) {
gras_init(&argc,argv);
/* Get the properties */
- xbt_dict_t props = gras_os_host_properties();
+ xbt_dict_t host_props = gras_os_host_properties();
xbt_dict_cursor_t cursor = NULL;
char *key,*data;
+ const char *value;
- /* Print the properties of the workstation 1 */
- xbt_dict_foreach(props,cursor,key,data) {
- INFO2("Host property: %s has value: %s",key,data);
- }
+ INFO0("== Dump all the properties of host1");
+ xbt_dict_foreach(host_props,cursor,key,data)
+ INFO2(" Host property: '%s' has value: '%s'",key,data);
- /* Try to get a property that does not exist */
- const char *noexist="Nonexisting";
- const char *value = gras_os_host_property_value(noexist);
- xbt_assert2(value == NULL, "Host property: %s has value: %s", noexist, value);
-
- gras_os_sleep(1);
+ INFO0("== Try to get a property that does not exist");
+ value = gras_os_host_property_value("non existing key");
+ xbt_assert1(value == NULL, "The key 'non existing key' exists (with value '%s')!!",value);
+
+ INFO0("== Set a host property that alice will try to retrieve in SG (from bob->hello)");
+ xbt_dict_set(host_props,"from bob",xbt_strdup("hello"), xbt_free_f);
+
+ INFO0("== Dump all the properties of host1 again to check the addition");
+ xbt_dict_foreach(host_props,cursor,key,data)
+ INFO2(" Host property: '%s' has value: '%s'",key,data);
+
+ gras_os_sleep(1); /* KILLME once bug on empty main is solved */
gras_exit();
return 0;
}