blob: 709efd9936e82b451c05bd98393dcda6e8476b36 [file] [log] [blame]
/* -*- linux-c -*-
*
* (C) Copyright IBM Corp. 2004
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This
* file and program are licensed under a BSD style license. See
* the Copying file included with the OpenHPI distribution for
* full licensing terms.
*
* Authors:
* Renier Morales <renier@openhpi.org>
*/
#include <glib.h>
#include <stdlib.h>
#include <string.h>
#include <SaHpi.h>
#include <oh_utils.h>
#include <rpt_resources.h>
/**
* main: Starts with an RPTable of 10 resources, adds 5 watchdog rdr
* to first resource. Fetches watchdogs ++randomly by record id and compares
* with original. A failed comparison means the test failed,
* otherwise the test passed.
*
* Return value: 0 on success, 1 on failure
**/
int main(int argc, char **argv)
{
RPTable *rptable = (RPTable *)g_malloc0(sizeof(RPTable));
oh_init_rpt(rptable);
GSList *records = NULL;
guint i = 0;
for (i = 0; rptentries[i].ResourceId != 0; i++) {
if (oh_add_resource(rptable, rptentries + i, NULL, 0))
return 1;
}
for (i = 0; i < 5; i++) {
if (oh_add_rdr(rptable, SAHPI_FIRST_ENTRY, watchdogs + i, NULL,0))
return 1;
else
records = g_slist_append(records, watchdogs + i);
}
for (; records; i--) {
SaHpiRdrT *tmprdr = NULL, *randrdr = NULL;
GSList *tmpnode = NULL;
guint k = (guint) (((gfloat)i)*rand()/(RAND_MAX+1.0));
tmpnode = g_slist_nth(records, k);
randrdr = (SaHpiRdrT *)tmpnode->data;
randrdr->RecordId =
oh_get_rdr_uid(randrdr->RdrType,
randrdr->RdrTypeUnion.WatchdogRec.WatchdogNum);
tmprdr = oh_get_rdr_by_id(rptable, SAHPI_FIRST_ENTRY,
randrdr->RecordId);
if (!tmprdr ||
memcmp(randrdr, tmprdr, sizeof(SaHpiRdrT)))
return 1;
else {
records = g_slist_remove_link(records, tmpnode);
g_slist_free_1(tmpnode);
}
}
return 0;
}