blob: 832a4fd169d0c904992efcdc7ca86e2755296aa3 [file] [log] [blame]
/*
* test_im1.c
*
* (C) Copyright IBM Corp. 2005
* (C) Copyright Intel Corp. 2005
*
* THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
* ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
* CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
*
* You can obtain a current copy of the Eclipse Public License from
* http://www.opensource.org/licenses/eclipse-1.0.php
*
* Author: Adrian Schuur <schuur@de.ibm.com>
*
* Description:
*
* Testing method invocation over SfcbLocal using
* SFCB's cmpiTestMethodProvider
*/
#include <cimc.h>
#include <cmci.h>
#include <native.h>
#include <unistd.h>
#include <stdlib.h>
#include "show.h"
int main()
{
CIMCEnv* ce;
CIMCClient* client;
char* msg;
CIMCStatus cstatus;
int rc;
CIMCObjectPath * objectpath;
CMPIStatus status;
CIMCArgs * args;
char *cim_host, *cim_host_passwd, *cim_host_userid, *cim_host_port;
CIMCData retval;
CIMCValue arg;
/* Setup a connection to the CIMOM */
cim_host = getenv("CIM_HOST");
if (cim_host == NULL) cim_host = "localhost";
cim_host_userid = getenv("CIM_HOST_USERID");
if (cim_host_userid == NULL) cim_host_userid = "root";
cim_host_passwd = getenv("CIM_HOST_PASSWD");
if (cim_host_passwd == NULL) cim_host_passwd = "password";
cim_host_port = getenv("CIM_HOST_PORT");
if (cim_host_port == NULL) cim_host_port = "5988";
ce = NewCIMCEnv("SfcbLocal",0,&rc,&msg);
// ce = NewCIMCEnv("XML",0,&rc,&msg);
client = ce->ft->connect(ce, cim_host , "http", cim_host_port, cim_host_userid, cim_host_passwd , &cstatus);
objectpath = ce->ft->newObjectPath(ce, "root/cimv2", "Sample_Method", NULL);
printf("+++creating args\n");
args = ce->ft->newArgs(ce, NULL);
CIMCValue a;
const int ARR_SIZE = 1672;
a.array = ce->ft->newArray(ce, ARR_SIZE, CMPI_uint8, NULL);
arg.uint8 = 123;
int i;
for (i = 0; i < ARR_SIZE; i++) {
a.array->ft->setElementAt(a.array, i, &arg, CMPI_uint8);
}
args->ft->addArg(args, "IntArray", &a, CMPI_uint8A);
printf("+++calling invoke method\n");
retval = client->ft->invokeMethod(client, objectpath, "CheckArrayNoType", args, NULL, &cstatus);
/* Print the results */
printf( "invokeMethod() rc=%d, msg=%s\n",
status.rc, (status.msg)? (char *)status.msg->hdl : NULL);
// if (args) CMRelease(args);
printf("release status\n");
if (status.msg) CMRelease(status.msg);
if (!status.rc) {
char *cv = value2Chars(retval.type,(CMPIValue*)&(retval.value));
printf("result(s):\n\treturn value: \"%s\"\n", cv);
}
if (objectpath) CMRelease(objectpath);
if (ce) CMRelease(ce);
return 0;
}