#include "gras.h"
-XBT_LOG_NEW_DEFAULT_CATEGORY(test,"Simple Property example");
+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[]) {
- gras_init(&argc,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;
-
- /* Print the properties of the workstation 1 */
- xbt_dict_foreach(props,cursor,key,data) {
- 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);
-
- /* 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);
- }
-
- /* 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);
+ 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);
+
+ 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);
+
+ 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");
+ 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("new prop");
+ xbt_assert1(!strcmp(value, "new value"),
+ "New property does have the value I've set ('%s' != 'new value')",
+ value);
+
gras_exit();
return 0;
}
-int master(int argc, char *argv[]) {
- gras_init(&argc,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;
-
- /* Print the properties of the workstation 1 */
- xbt_dict_foreach(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);
+ char *key, *data;
+ const char *value;
+
+ INFO0("== Dump all the properties of host1");
+ xbt_dict_foreach(host_props, cursor, key, data)
+ INFO2(" Host property: '%s' has value: '%s'", key, data);
+
+ 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;
}