fres_block_register_dummy();
return fra_register(&dummy_allocator);
}
+
+/**
+ * Initializes addition dummy resource allocator.
+ *
+ * This is intended for the use in automatic tests which need to work
+ * with multiple resources. The test can initialize several dummy
+ * resources, not just the default one with id 255.
+ *
+ * @param id
+ *
+ * @return Zero on success, non-zero error code on error.
+ */
+int fra_dummy_init_and_activate_id(frsh_resource_id_t res_id)
+{
+ struct fres_allocator *fra;
+ int ret;
+ fres_block_register_dummy();
+ fra = malloc(sizeof(*fra));
+ if (!fra)
+ goto err;
+ *fra = dummy_allocator;
+ fra->res_id = res_id;
+ fra->priv = malloc(sizeof(int));
+ ret = fra_register(fra);
+ if (ret)
+ goto err;
+ ret = fra_activate(fra->res_type, fra->res_id);
+ return ret;
+err:
+ return -1;
+}
bool opt_accept_all = false;
bool opt_daemon = false;
char *opt_pidfile = NULL;
+int opt_res_id = DUMMY_RESOURCE_ID;
struct dummy_data {
int some_data;
struct dummy_data dummy_data;
-static const struct fres_res_manager frm = {
+static struct fres_res_manager frm = {
.res_type = DUMMY_RESOURCE_TYPE,
.res_id = DUMMY_RESOURCE_ID,
.admission_test = admission_test,
static struct option long_opts[] = {
{ "daemon", optional_argument, NULL, 'd' },
{ "loglevel", 1, 0, 'l' },
+ { "id", required_argument, 0, 'i' },
{ "accept-all", 0, 0, 'a' },
{ "help", 0, 0, 'h' },
{ 0, 0, 0, 0}
printf("usage: frm_dummy [ options ]\n");
printf(" -a, --accept-all Accepts all contracts\n");
printf(" -d, --daemon [pid-file] go to background after FORB initialization\n");
+ printf(" -i, --id <resource id> Use a different id that the default (%d)\n", DUMMY_RESOURCE_ID);
printf(" -h, --help Display this help\n");
printf(" -l, --loglevel <number>|<domain>=<number>,...\n");
}
forb_init_attr_t attr = { .orb_id = "org.frescor.frm.dummy" };
int opt;
- while ((opt = getopt_long(argc, argv, "ad::l:h", &long_opts[0], NULL)) != EOF) {
+ while ((opt = getopt_long(argc, argv, "ad::i:l:h", &long_opts[0], NULL)) != EOF) {
switch (opt) {
case 'a':
opt_accept_all = true;
opt_daemon = true;
opt_pidfile = optarg;
break;
+ case 'i':
+ opt_res_id = atoi(optarg);
+ break;
case 'l':
ul_log_domain_arg2levels(optarg);
break;
ulogd_frm_generic.level = UL_LOGL_ERR;
#endif
+ frm.res_id = opt_res_id;
ret = frm_register_and_run(orb, &frm);
if (ret != 0) {