You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-11-03 17:13:17 +03:00
172 lines
3.6 KiB
C
172 lines
3.6 KiB
C
#include <net-snmp/net-snmp-config.h>
|
|
|
|
#if HAVE_IO_H
|
|
#include <io.h>
|
|
#endif
|
|
#include <stdio.h>
|
|
#if HAVE_STDLIB_H
|
|
#include <stdlib.h>
|
|
#endif
|
|
#if HAVE_MALLOC_H
|
|
#include <malloc.h>
|
|
#endif
|
|
#include <sys/types.h>
|
|
#if HAVE_STRING_H
|
|
#include <string.h>
|
|
#else
|
|
#include <strings.h>
|
|
#endif
|
|
|
|
#include <net-snmp/net-snmp-includes.h>
|
|
#include <net-snmp/types.h>
|
|
#include <net-snmp/library/snmp_api.h>
|
|
#include <net-snmp/library/container.h>
|
|
#include <net-snmp/library/container_binary_array.h>
|
|
#include <net-snmp/library/tools.h>
|
|
#include <net-snmp/library/snmp_assert.h>
|
|
|
|
#define TEST_SIZE 7
|
|
|
|
void
|
|
print_int(netsnmp_index *i, void *v)
|
|
{
|
|
printf("item %p = %ld\n", i, i->oids[0]);
|
|
}
|
|
|
|
int
|
|
test_int(void)
|
|
{
|
|
oid o1 = 1;
|
|
oid o2 = 2;
|
|
oid o3 = 6;
|
|
oid o4 = 8;
|
|
oid o5 = 9;
|
|
oid ox = 7;
|
|
oid oy = 10;
|
|
netsnmp_index i1,i2,i3,i4,i5,ix,iy, *ip;
|
|
netsnmp_index *a[TEST_SIZE] = { &i1, &i2, &i3, &ix, &i4, &i5, &iy };
|
|
netsnmp_container *c = netsnmp_container_get_binary_array();
|
|
int i;
|
|
|
|
c->compare = netsnmp_compare_netsnmp_index;
|
|
|
|
i1.oids = &o1;
|
|
i2.oids = &o2;
|
|
i3.oids = &o3;
|
|
i4.oids = &o4;
|
|
i5.oids = &o5;
|
|
ix.oids = &ox;
|
|
iy.oids = &oy;
|
|
i1.len = i2.len = i3.len = i4.len = i5.len = ix.len = iy.len = 1;
|
|
|
|
printf("Creating container...\n");
|
|
|
|
printf("Inserting data...\n");
|
|
CONTAINER_INSERT(c,&i4);
|
|
CONTAINER_INSERT(c,&i2);
|
|
CONTAINER_INSERT(c,&i3);
|
|
CONTAINER_INSERT(c,&i1);
|
|
CONTAINER_INSERT(c,&i5);
|
|
|
|
printf("For each...\n");
|
|
CONTAINER_FOR_EACH(c, print_int, NULL);
|
|
printf("Done.\n");
|
|
|
|
printf("\n");
|
|
ip = CONTAINER_FIRST(c);
|
|
printf("Find first = %p %ld\n",ip, ip->oids[0]);
|
|
while( ip ) {
|
|
ip = CONTAINER_NEXT(c,ip);
|
|
if(ip)
|
|
printf("Find next = %p %ld\n",ip, ip->oids[0]);
|
|
else
|
|
printf("Find next = %s\n",ip);
|
|
}
|
|
|
|
for( i=0; i < TEST_SIZE; ++i) {
|
|
printf("\n");
|
|
ip = CONTAINER_FIND(c,a[i]);
|
|
printf("Find %ld = %p %ld\n", a[i]->oids[0], ip, ip ? ip->oids[0] : 0);
|
|
ip = CONTAINER_NEXT(c,a[i]);
|
|
printf("Next %ld = %p %ld\n", a[i]->oids[0], ip, ip ? ip->oids[0] : 0);
|
|
}
|
|
|
|
printf("Done.\n");
|
|
|
|
return 0;
|
|
}
|
|
|
|
void
|
|
print_string(char *i, void *v)
|
|
{
|
|
printf("item %s\n", i);
|
|
}
|
|
|
|
int
|
|
my_strcmp(char *lhs, char *rhs)
|
|
{
|
|
int rc = strcmp(lhs,rhs);
|
|
/* printf("%s %d %s\n",lhs, rc, rhs); */
|
|
return rc;
|
|
}
|
|
|
|
int
|
|
test_string()
|
|
{
|
|
const char *o1 = "zebra";
|
|
const char *o2 = "b-two";
|
|
const char *o3 = "b";
|
|
const char *o4 = "cedar";
|
|
const char *o5 = "alpha";
|
|
const char *ox = "dev";
|
|
const char *oy = "aa";
|
|
const char * ip;
|
|
|
|
const char *a[TEST_SIZE] = { o1, o2, o3, ox, o4, o5, oy };
|
|
netsnmp_container *c = netsnmp_container_get_binary_array();
|
|
int i;
|
|
|
|
c->compare = my_strcmp;
|
|
|
|
printf("Creating container...\n");
|
|
|
|
printf("Inserting data...\n");
|
|
CONTAINER_INSERT(c,o4);
|
|
CONTAINER_INSERT(c,o2);
|
|
CONTAINER_INSERT(c,o3);
|
|
CONTAINER_INSERT(c,o1);
|
|
CONTAINER_INSERT(c,o5);
|
|
printf("\n");
|
|
printf("For each...\n");
|
|
CONTAINER_FOR_EACH(c, print_string, NULL);
|
|
printf("Done.\n");
|
|
|
|
printf("\n");
|
|
ip = CONTAINER_FIRST(c);
|
|
printf("Find first = %s\n",ip);
|
|
while( ip ) {
|
|
ip = CONTAINER_NEXT(c,ip);
|
|
printf("Find next = %s\n",ip);
|
|
}
|
|
|
|
for( i=0; i < TEST_SIZE; ++i) {
|
|
printf("\n");
|
|
ip = CONTAINER_FIND(c,a[i]);
|
|
printf("Find %s = %s\n", a[i], ip);
|
|
ip = CONTAINER_NEXT(c,a[i]);
|
|
printf("Next %s = %s\n", a[i], ip);
|
|
}
|
|
|
|
printf("Done.\n");
|
|
|
|
return 0;
|
|
}
|
|
|
|
int
|
|
main(int argc, char** argv)
|
|
{
|
|
|
|
test_int();
|
|
test_string();
|
|
}
|