/xmlbench/trunk

To get this branch, use:
bzr branch http://darksoft.org/webbzr/xmlbench/trunk

« back to all changes in this revision

Viewing changes to create/oracle-dom.cpp

  • Committer: Suren A. Chilingaryan
  • Date: 2009-02-16 09:27:17 UTC
  • Revision ID: csa@dside.dyndns.org-20090216092717-wipyvaaw2srxhgns
Initial import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include <stdio.h>
 
2
#include <sys/time.h>
 
3
#include <oraxml.hpp>
 
4
 
 
5
#include "tools.h"
 
6
#define memsize MAXOUTSIZE
 
7
 
 
8
/* 
 
9
Very strange optimization of library function: setAttribute(node,name,value)
 
10
    setAttribute(nodeVar,"name",valueVar); - doesn't copy context of 
 
11
    valueVar but simply make a pointer on it. xmlterm() wouldn't free
 
12
    this memory.
 
13
    But: setAttribute(nodeVar,"name","value"); - works OK, it copies
 
14
    context of stack variable.
 
15
*/
 
16
 
 
17
oratext nsxsi[64]="http://www.w3.org/2001/XMLSchema-instance";
 
18
oratext nsenc[64]="http://www.w3.org/2001/12/soap-encoding";
 
19
oratext nssoap[64]="http://www.w3.org/2001/12/soap-envelope";
 
20
oratext nsopc[64]="http://opcfoundation.org/webservices/OPCDA/";
 
21
 
 
22
XMLParser *parser;
 
23
char *mem;
 
24
 
 
25
void initXML(struct TestData *td) {
 
26
    unsigned int ecode;
 
27
    parser=new XMLParser;
 
28
    ecode=parser->xmlinit();
 
29
    if (ecode)
 
30
    {
 
31
        fprintf(stderr,"Failed to initialze XML parser, error %u\n", (unsigned) ecode);
 
32
        exit(1);
 
33
    }
 
34
    mem = (char*)malloc(memsize);
 
35
    if (!mem) {
 
36
        fprintf(stderr,"Can't allocate memory!\n");
 
37
        exit(1);
 
38
    }
 
39
        
 
40
}
 
41
 
 
42
void releaseXML(struct TestData *td) {
 
43
    parser->xmlterm();
 
44
    delete parser;
 
45
    free(mem);
 
46
}
 
47
 
 
48
void parseXML(struct TestData *td, unsigned long iter) {
 
49
    Document *doc;
 
50
    Element *pnode,*node,*node1,*node2;
 
51
    unsigned int ecode;
 
52
    char str[td->inc][16];;
 
53
    int i;
 
54
    
 
55
    doc=parser->createDocument(nssoap,NULL,NULL);
 
56
    pnode=doc->createElementNS((oratext*)nssoap,(oratext*)"soap:Envelope");
 
57
    doc->appendChild(pnode);    
 
58
    pnode->setAttribute((oratext*)"xmlns:soap",(oratext*)nssoap);
 
59
    pnode->setAttribute((oratext*)"xmlns:xsi",(oratext*)nsxsi);
 
60
    pnode->setAttribute((oratext*)"xmlns:enc",(oratext*)nsenc);
 
61
    node=doc->createElementNS(nssoap,(oratext*)"soap:Body");
 
62
    pnode->appendChild(node);pnode=node;
 
63
    node=doc->createElementNS((oratext*)nsopc,(oratext*)"WriteResponse");
 
64
    pnode->appendChild(node);pnode=node;
 
65
    node=doc->createElementNS((oratext*)nsopc,(oratext*)"WriteResult");
 
66
    node->setAttribute((oratext*)"RcvTime",(oratext*)"2002-04-29T10:16:26.6806250+02:00");
 
67
    node->setAttribute((oratext*)"ReplyTime",(oratext*)"2002-04-29T10:16:26.7806250+02:00");
 
68
    node->setAttribute((oratext*)"ClientRequestHandle",(oratext*)"WriteError");
 
69
    node->setAttribute((oratext*)"RevisedLocaleID",(oratext*)"en");
 
70
    node->setAttribute((oratext*)"ServerState",(oratext*)"running");
 
71
    pnode->appendChild(node);
 
72
    node1=doc->createElementNS((oratext*)nsopc,(oratext*)"RItemList");
 
73
    pnode->appendChild(node1);
 
74
    node=doc->createElementNS((oratext*)nsopc,(oratext*)"Errors");
 
75
    node->setAttribute((oratext*)"ID",(oratext*)"E_UNKNOWNITEMID");
 
76
    pnode->appendChild(node);
 
77
    node2=doc->createElementNS((oratext*)nsopc,(oratext*)"Text");
 
78
    node->appendChild(node2);    
 
79
    node2->appendChild(doc->createTextNode((oratext*)"The item does not exist in the server address space."));
 
80
    node=doc->createElementNS(nsopc,(oratext*)"Errors");
 
81
    node->setAttribute((oratext*)"ID",(oratext*)"S_CLAMP");
 
82
    pnode->appendChild(node);
 
83
    node2=doc->createElementNS(nsopc,(oratext*)"Text");
 
84
    node->appendChild(node2);    
 
85
    node2->appendChild(doc->createTextNode((oratext*)"The value written was accepted but the output was clamped."));
 
86
 
 
87
    pnode=node1;
 
88
    node=doc->createElementNS((oratext*)nsopc,(oratext*)"Items");
 
89
    node->setAttribute((oratext*)"ItemPath",(oratext*)"");
 
90
    node->setAttribute((oratext*)"ItemName",(oratext*)"WrongItemID1");
 
91
    node->setAttribute((oratext*)"Timestamp",(oratext*)"0001-01-01T00:00:00.0000000+01:00");
 
92
    node->setAttribute((oratext*)"ErrorID",(oratext*)"E_UNKNOWNITEMID");
 
93
    pnode->appendChild(node);
 
94
    node1=doc->createElementNS((oratext*)nsopc,(oratext*)"Value");
 
95
    node->appendChild(node1);
 
96
    node->setAttribute((oratext*)"xsi:nil",(oratext*)"true");
 
97
 
 
98
    node=doc->createElementNS((oratext*)nsopc,(oratext*)"Items");
 
99
    node->setAttribute((oratext*)"ItemPath",(oratext*)"");
 
100
    node->setAttribute((oratext*)"ItemName",(oratext*)"WrongItemID2");
 
101
    node->setAttribute((oratext*)"Timestamp",(oratext*)"0001-01-01T00:00:00.0000000+01:00");
 
102
    node->setAttribute((oratext*)"ErrorID",(oratext*)"E_UNKNOWNITEMID");
 
103
    pnode->appendChild(node);
 
104
    node1=doc->createElementNS((oratext*)nsopc,(oratext*)"Value");
 
105
    node->appendChild(node1);
 
106
    node->setAttribute((oratext*)"xsi:nil",(oratext*)"true");
 
107
 
 
108
    node=doc->createElementNS((oratext*)nsopc,(oratext*)"Items");
 
109
    node->setAttribute((oratext*)"ItemPath",(oratext*)"/Reals");
 
110
    node->setAttribute((oratext*)"ItemName",(oratext*)"Float1");
 
111
    node->setAttribute((oratext*)"ValueType",(oratext*)"xsd:float");
 
112
    node->setAttribute((oratext*)"Timestamp",(oratext*)"2002-04-29T11:47:18.1493750+02:00");
 
113
    pnode->appendChild(node);
 
114
    node1=doc->createElementNS((oratext*)nsopc,(oratext*)"Value");
 
115
    node->appendChild(node1);
 
116
    node->setAttribute((oratext*)"xsi:type",(oratext*)"xsd:float");
 
117
    node1->appendChild(doc->createTextNode((oratext*)"10.0141414"));
 
118
 
 
119
    node=doc->createElementNS((oratext*)nsopc,(oratext*)"Items");
 
120
    node->setAttribute((oratext*)"ItemPath",(oratext*)"/Reals");
 
121
    node->setAttribute((oratext*)"ItemName",(oratext*)"Float2");
 
122
    node->setAttribute((oratext*)"ValueType",(oratext*)"xsd:float");
 
123
    node->setAttribute((oratext*)"Timestamp",(oratext*)"2002-04-29T11:47:18.1493750+02:00");
 
124
    node->setAttribute((oratext*)"SuccessID",(oratext*)"S_CLAMP");
 
125
    pnode->appendChild(node);
 
126
    node1=doc->createElementNS((oratext*)nsopc,(oratext*)"Value");
 
127
    node->appendChild(node1);
 
128
    node->setAttribute((oratext*)"xsi:type",(oratext*)"xsd:float");
 
129
    node1->appendChild(doc->createTextNode((oratext*)"1.07"));
 
130
    
 
131
    for (i=0;i<td->inc;i++) {
 
132
        node=doc->createElementNS((oratext*)nsopc,(oratext*)"Items");
 
133
        node->setAttribute((oratext*)"ItemPath",(oratext*)"/Integer");
 
134
        node->setAttribute((oratext*)"ItemName",(oratext*)"IntN");
 
135
        node->setAttribute((oratext*)"ValueType",(oratext*)"xsd:int");
 
136
        node->setAttribute((oratext*)"Timestamp",(oratext*)"2002-04-29T11:47:18.1493750+02:00");
 
137
        node->setAttribute((oratext*)"SuccessID",(oratext*)"S_CLAMP");
 
138
        pnode->appendChild(node);
 
139
        node1=doc->createElementNS((oratext*)nsopc,(oratext*)"Value");
 
140
        node->appendChild(node1);
 
141
        node->setAttribute((oratext*)"xsi:type",(oratext*)"xsd:int");
 
142
        sprintf(str[i],"%u",rand());
 
143
        node1->appendChild(doc->createTextNode((oratext*)str[i]));
 
144
    }
 
145
 
 
146
    doc->print((oratext*)mem,memsize,0,0);
 
147
    
 
148
//    if (iter+1==td->iterations) puts(mem);
 
149
 
 
150
//    parser->xmlclean();
 
151
    parser->xmlterm();
 
152
    parser->xmlinit();
 
153
}
 
154
 
 
155
 
 
156
int main(int argc, char *argv[]) {
 
157
    return Test(argc,argv);
 
158
}