Add: add a test example using Java API
This commit is contained in:
parent
93fb9f6fa6
commit
ef599f1ba0
|
@ -0,0 +1,7 @@
|
||||||
|
CC=g++ -std=c++11
|
||||||
|
test: test.o
|
||||||
|
$(CC) -o test test.o
|
||||||
|
test.o: test.cpp
|
||||||
|
$(CC) -c test.cpp -o test.o
|
||||||
|
clean:
|
||||||
|
rm -rf *.o test
|
|
@ -0,0 +1,69 @@
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <cstring>
|
||||||
|
using namespace std;
|
||||||
|
string encode(string& s)
|
||||||
|
{
|
||||||
|
string ret;
|
||||||
|
unsigned char *ptr = (unsigned char *)s.c_str();
|
||||||
|
ret.reserve(s.length());
|
||||||
|
|
||||||
|
for(int i=0;i<s.length();++i)
|
||||||
|
{
|
||||||
|
if((int(ptr[i])==58) || (int(ptr[i])==47) ||(int(ptr[i])==42) || (int(ptr[i])==45) || (int(ptr[i])==46) || (int(ptr[i])==95))
|
||||||
|
ret += ptr[i];
|
||||||
|
else if((int(ptr[i])>=48) && (int(ptr[i])<=57))
|
||||||
|
ret += ptr[i];
|
||||||
|
else if((int(ptr[i])>=65) && (int(ptr[i])<=90))
|
||||||
|
ret += ptr[i];
|
||||||
|
else if((int(ptr[i])>=97) && (int(ptr[i])<=122))
|
||||||
|
ret += ptr[i];
|
||||||
|
else if(int(ptr[i])==32)
|
||||||
|
ret += '+';
|
||||||
|
else
|
||||||
|
{
|
||||||
|
char buf[5];
|
||||||
|
memset(buf,0,5);
|
||||||
|
snprintf(buf,5,"%%%X",ptr[i]);
|
||||||
|
ret.append(buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
string decode(string& s)
|
||||||
|
{
|
||||||
|
string ret;
|
||||||
|
char ch;
|
||||||
|
int ii;
|
||||||
|
for(size_t i = 0; i < s.length(); ++i)
|
||||||
|
{
|
||||||
|
if(int(s[i]) == 37)
|
||||||
|
{
|
||||||
|
sscanf(s.substr(i+1,2).c_str(), "%x", &ii);
|
||||||
|
ch = static_cast<char>(ii);
|
||||||
|
ret += ch;
|
||||||
|
i = i + 2;
|
||||||
|
}
|
||||||
|
else if(s[i] == '+')
|
||||||
|
{
|
||||||
|
ret += ' ';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ret += s[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
string a;
|
||||||
|
cin >> a;
|
||||||
|
string b=encode(a);
|
||||||
|
cout<<b<<endl;
|
||||||
|
string c=decode(b);
|
||||||
|
if(a==c)
|
||||||
|
cout<<"OK"<<endl;
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,144 @@
|
||||||
|
import java.io.*;
|
||||||
|
import java.util.*;
|
||||||
|
import jgsc.GstoreConnector;
|
||||||
|
|
||||||
|
class MyThread extends Thread {
|
||||||
|
public static boolean correctness = true;
|
||||||
|
//public static int cnum = 0;
|
||||||
|
private int num = 0;
|
||||||
|
private GstoreConnector gc;
|
||||||
|
private String sparql;
|
||||||
|
private int rnum = 0;
|
||||||
|
public MyThread(int _num, GstoreConnector _gc, String _sparql, int _rnum) {
|
||||||
|
num = _num;
|
||||||
|
gc = _gc;
|
||||||
|
sparql = _sparql;
|
||||||
|
rnum = _rnum;
|
||||||
|
}
|
||||||
|
public void run() {
|
||||||
|
Thread t = Thread.currentThread();
|
||||||
|
//try {
|
||||||
|
// File f = new File("result/"+num+".txt");
|
||||||
|
// DataOutputStream of = new DataOutputStream(new FileOutputStream(f));
|
||||||
|
// of.writeBytes(t.getName()+" "+t.getId()+"\n");
|
||||||
|
// of.writeBytes("Thread: "+num+"\n");
|
||||||
|
String answer = gc.query(sparql);
|
||||||
|
// of.writeBytes(answer);
|
||||||
|
int m = 0;
|
||||||
|
for(int i = 0; i<sparql.length(); ++i)
|
||||||
|
{
|
||||||
|
if(sparql.charAt(i) == '?')
|
||||||
|
++m;
|
||||||
|
if(sparql.charAt(i) == '{')
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
int n = 0;
|
||||||
|
for(int i = 0; i<answer.length(); ++i)
|
||||||
|
{
|
||||||
|
if(answer.charAt(i) == '{')
|
||||||
|
++n;
|
||||||
|
}
|
||||||
|
int Num = (n-3)/(m+1);
|
||||||
|
// of.writeBytes("The number of the results: "+Num+"\n");
|
||||||
|
// of.writeBytes("Thread "+t.getName()+" ends!");
|
||||||
|
// of.close();
|
||||||
|
if (rnum != Num)
|
||||||
|
correctness = false;
|
||||||
|
// if (rnum == Num)
|
||||||
|
// {
|
||||||
|
// synchronized (this){
|
||||||
|
// cnum++;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
//catch(IOException e) {
|
||||||
|
// e.printStackTrace();
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Benchmark
|
||||||
|
{
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
GstoreConnector gc = new GstoreConnector("172.31.222.94", 9000);
|
||||||
|
//gc.load("dbpedia");
|
||||||
|
String[] spq = new String[6];
|
||||||
|
spq[0] = "select ?v0 where"
|
||||||
|
+"{"
|
||||||
|
+"?v0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://dbpedia.org/class/yago/LanguagesOfBotswana> ."
|
||||||
|
+"?v0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://dbpedia.org/class/yago/LanguagesOfNamibia> ."
|
||||||
|
+"?v0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://dbpedia.org/ontology/Language> ."
|
||||||
|
+"}";
|
||||||
|
spq[1] = "select ?v0 where"
|
||||||
|
+"{"
|
||||||
|
+"?v0 <http://dbpedia.org/ontology/associatedBand> <http://dbpedia.org/resource/LCD_Soundsystem> ."
|
||||||
|
+"}";
|
||||||
|
spq[2] = "select ?v2 where"
|
||||||
|
+"{"
|
||||||
|
+"<http://dbpedia.org/resource/!!Destroy-Oh-Boy!!> <http://dbpedia.org/property/title> ?v2 ."
|
||||||
|
+"}";
|
||||||
|
spq[3] = "select ?v0 ?v2 where"
|
||||||
|
+"{"
|
||||||
|
+"?v0 <http://dbpedia.org/ontology/activeYearsStartYear> ?v2 ."
|
||||||
|
+"}";
|
||||||
|
spq[4] = "select ?v0 ?v1 ?v2 where"
|
||||||
|
+"{"
|
||||||
|
+"?v0 <http://dbpedia.org/property/dateOfBirth> ?v2 ."
|
||||||
|
+"?v1 <http://dbpedia.org/property/genre> ?v2 ."
|
||||||
|
+"}";
|
||||||
|
spq[5] = "select ?v0 ?v1 ?v2 ?v3 where"
|
||||||
|
+"{"
|
||||||
|
+"?v0 <http://dbpedia.org/property/familycolor> ?v1 ."
|
||||||
|
+"?v0 <http://dbpedia.org/property/glotto> ?v2 ."
|
||||||
|
+"?v0 <http://dbpedia.org/property/lc> ?v3 ."
|
||||||
|
+"}";
|
||||||
|
//spq[6] = "select ?v0 ?v1 ?v2 ?v3 ?v4 ?v5 ?v6 ?v7 ?v8 ?v9 where"
|
||||||
|
// +"{"
|
||||||
|
// +"?v0 <http://dbpedia.org/property/dateOfBirth> ?v1 ."
|
||||||
|
// +"?v0 <http://dbpedia.org/property/genre> ?v2 ."
|
||||||
|
// +"?v0 <http://dbpedia.org/property/instrument> ?v3 ."
|
||||||
|
// +"?v0 <http://dbpedia.org/property/label> ?v4 ."
|
||||||
|
// +"?v0 <http://dbpedia.org/property/placeOfBirth> ?v5 ."
|
||||||
|
// +"?v6 <http://dbpedia.org/property/name> ?v7 ."
|
||||||
|
// +"?v6 <http://dbpedia.org/property/occupation> ?v8 ."
|
||||||
|
// +"?v6 <http://dbpedia.org/property/placeOfBirth> ?v5 ."
|
||||||
|
// +"?v6 <http://dbpedia.org/property/instrument> ?v3 ."
|
||||||
|
// +"?v6 <http://dbpedia.org/property/notableInstruments> ?v9 ."
|
||||||
|
// +"}";
|
||||||
|
int[] result = {10, 14, 14, 199424, 33910, 1039};
|
||||||
|
int tnum = 6;
|
||||||
|
tnum = 100;
|
||||||
|
MyThread[] qt = new MyThread[tnum];
|
||||||
|
for(int i = 0; i < tnum; ++i)
|
||||||
|
{
|
||||||
|
qt[i] = new MyThread(i, gc, spq[i%6], result[i%6]);
|
||||||
|
qt[i].start();
|
||||||
|
}
|
||||||
|
for(int i = 0; i < tnum; ++i)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
qt[i].join();
|
||||||
|
}
|
||||||
|
catch(InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//gc.unload("dbpedia");
|
||||||
|
//double accuracy = MyThread.cnum / tnum;
|
||||||
|
try{
|
||||||
|
File f = new File("result/correctness.txt");
|
||||||
|
DataOutputStream of = new DataOutputStream(new FileOutputStream(f));
|
||||||
|
if (MyThread.correctness == true)
|
||||||
|
of.writeBytes("The results are correct!");
|
||||||
|
else
|
||||||
|
of.writeBytes("The results exist errors!");
|
||||||
|
of.close();
|
||||||
|
}
|
||||||
|
catch(IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue