Beispiel #1
0
static void
nodes_free(node_t *node)
{
	if(node->child != NULL)
		nodes_free(node->child);

	if(node->next != NULL)
		nodes_free(node->next);

	free(node->name);
	free(node);
}
Beispiel #2
0
void
tree_free(tree_t tree)
{
	if(tree != NULL_TREE)
	{
		nodes_free(&tree->node);
	}
}
Beispiel #3
0
END_TEST


START_TEST(job_nodes_test)
  {
  job *pjob = (job *)calloc(1, sizeof(job));
  pjob->ji_usages = new std::map<std::string, job_host_data>();

  pjob->ji_wattr[JOB_ATR_exec_host].at_val.at_str = strdup("napali/0-9+waimea/0-9");
  pjob->ji_wattr[JOB_ATR_exec_port].at_val.at_str = strdup("15002+15002");

  fail_unless(job_nodes(*pjob) != PBSE_NONE);
  // nothing should've happened since the flag isn't set
  fail_unless(pjob->ji_numnodes == 0);
  
  pjob->ji_wattr[JOB_ATR_exec_host].at_flags = ATR_VFLAG_SET;

  // Force it to not resolve the hostname
  addr_fail = true;
  int rc = job_nodes(*pjob);
  fail_unless(rc == PBSE_CANNOT_RESOLVE, "Error is %d", rc);
  addr_fail = false; // allow things to work normally


  fail_unless(job_nodes(*pjob) == PBSE_NONE);
  fail_unless(pjob->ji_numnodes == 2);
  fail_unless(pjob->ji_numvnod == 20);

  fail_unless(!strcmp(pjob->ji_hosts[0].hn_host, "napali"));
  fail_unless(!strcmp(pjob->ji_hosts[1].hn_host, "waimea"));
  fail_unless(pjob->ji_hosts[2].hn_node == TM_ERROR_NODE);
  fail_unless(pjob->ji_vnods[20].vn_node == TM_ERROR_NODE);

  for (int i = 0; i < 2; i++)
    {
    fail_unless(pjob->ji_hosts[i].hn_node == i);
    fail_unless(pjob->ji_hosts[i].hn_sister == SISTER_OKAY);
    fail_unless(pjob->ji_hosts[i].hn_port == 15002);
    fail_unless(GET_NEXT(pjob->ji_hosts[i].hn_events) == NULL);
    }
  
  for (int i = 0; i < 20; i++)
    {
    fail_unless(pjob->ji_vnods[i].vn_node == i);
    fail_unless(pjob->ji_vnods[i].vn_index == i % 10);
    fail_unless(pjob->ji_vnods[i].vn_host == &pjob->ji_hosts[i/10]);
    }

  nodes_free(pjob);
  fail_unless(pjob->ji_vnods == NULL);
  fail_unless(pjob->ji_hosts == NULL);
  }
Beispiel #4
0
void job_free(

  job *pj)  /* I (modified) */

  {
  int    i;

  if (LOGLEVEL >= 8)
    {
    sprintf(log_buffer, "freeing job");

    log_record(PBSEVENT_DEBUG,
               PBS_EVENTCLASS_JOB,
               pj->ji_qs.ji_jobid,
               log_buffer);
    }

  /* remove any malloc working attribute space */

  for (i = 0;i < JOB_ATR_LAST;i++)
    {
    job_attr_def[i].at_free(&pj->ji_wattr[i]);
    }

  if (pj->ji_grpcache)
    free(pj->ji_grpcache);

  assert(pj->ji_preq == NULL);

  nodes_free(pj);

  tasks_free(pj);

  if (pj->ji_resources)
    {
    free(pj->ji_resources);
    pj->ji_resources = NULL;
    }

  if (pj->ji_globid)
    {
    free(pj->ji_globid);
    pj->ji_globid = NULL;
    }

  /* now free the main structure */

  free((char *)pj);

  return;
  }  /* END job_free() */
Beispiel #5
0
END_TEST


START_TEST(job_nodes_test)
  {
  job *pjob = (job *)calloc(1, sizeof(job));

  pjob->ji_wattr[JOB_ATR_exec_host].at_val.at_str = strdup("napali/0-9+waimea/0-9");
  pjob->ji_wattr[JOB_ATR_exec_port].at_val.at_str = strdup("15002+15002");

  job_nodes(*pjob);
  // nothing should've happened since the flag isn't set
  fail_unless(pjob->ji_numnodes == 0);

  pjob->ji_wattr[JOB_ATR_exec_host].at_flags = ATR_VFLAG_SET;

  job_nodes(*pjob);
  fail_unless(pjob->ji_numnodes == 2);
  fail_unless(pjob->ji_numvnod == 20);

  fail_unless(!strcmp(pjob->ji_hosts[0].hn_host, "napali"));
  fail_unless(!strcmp(pjob->ji_hosts[1].hn_host, "waimea"));
  fail_unless(pjob->ji_hosts[2].hn_node == TM_ERROR_NODE);
  fail_unless(pjob->ji_vnods[20].vn_node == TM_ERROR_NODE);

  for (int i = 0; i < 2; i++)
    {
    fail_unless(pjob->ji_hosts[i].hn_node == i);
    fail_unless(pjob->ji_hosts[i].hn_sister == SISTER_OKAY);
    fail_unless(pjob->ji_hosts[i].hn_port == 15002);
    fail_unless(GET_NEXT(pjob->ji_hosts[i].hn_events) == NULL);
    }
  
  for (int i = 0; i < 20; i++)
    {
    fail_unless(pjob->ji_vnods[i].vn_node == i);
    fail_unless(pjob->ji_vnods[i].vn_index == i % 10);
    fail_unless(pjob->ji_vnods[i].vn_host == &pjob->ji_hosts[i/10]);
    }

  nodes_free(pjob);
  fail_unless(pjob->ji_vnods == NULL);
  fail_unless(pjob->ji_hosts == NULL);
  }
Beispiel #6
0
void kitsune_heaplist_free(kitsune_heaplist* list)
{
	nodes_free(list->begin);
	free(list);
}
Beispiel #7
0
static void nodes_free(struct kitsune_heaplist_node* list_node) {
	if(list_node) {
		nodes_free(list_node->next);
		free(list_node);
	}
}