Last modified: Fri Feb 11 03:07:39 EST 2005
BFStar.py is a program that reads in WSDL files based on a format specified by the EEE. The WSDL files are then converted to data structures that can be compared using a bloom filter. The program also requires a GOAL WSDL file that defines what the output is desired by the user. BFStar.py then searches through the available web service data structures to 1)discover a single web service that matches the GOAL service or 2)composes a service out of the available services that meets the end requirements of the GOAL service. This program uses different versions of the A* algorithm and uses the bloom filter to create succinct data structures from the web service information.
BFStar -+-- bfstar.py : main program for BF* algorithms
|
+-- WebServicesPath.py, Path.py, bloom.py : additional implementation files
|
+-- WSDL_Repos : directory containing EEE's official test WSDL files
|
+-- WSDL_Repos.xml : example goal file following EEE format
|
+-- goal1.xml - goal5.xml : example goal files for our own testing data
To test that everything is installed,
you can try:
c:\Python24\python bfstar.py -h
This should display a help message.
Eric J. Larson : ejl175@psu.edu (Lead developer)
Seog-Chan Oh : sxo160@psu.edu
Dongwon Lee : dongwon@psu.edu
The next section will start you off on using the bfstar.py program!
The BFStar.py program uses the common unix command line format for accepting input. It only requires that Python (>= 2.3) is installed. To invoke the program, simple enter:
c:\Python24\python.exe bfstar.py [options]
To see the options available simply enter:
c:\Python24\python.exe bfstar.py -h or
c:\Python24\python.exe bfstar.py --help
This will show a list of options that can be given to bfstar.py in order to use different algorithms and tracks.
Note: We will assume that python is located in the users path and that the user is running the application in the same directory as bfstar.py
A basic example of running bfstar.py is:
c:\Python24\python.exe bfstar.py -i foo -g goal.xml -d
This runs the program in debug mode in order to show more output. It uses the WSDL files in the "foo" directory as input, and "goal.xml" file as the goal. It is important that this "goal.xml" file is of the SAME format as the one given in EEE web page. Here is an example of a valid GOAL wsdl file.
goal.xml
Typically, in real testing, we used the following options.
c:\Python24\python.exe bfstar.py -i foo -g goal.xml
where
It is all pretty simple! In the next section we will go through each flag to see what is available and how each option works.
c:\Python24\python.exe bfstar.py -h
c:\Python24\python.exe bfstar.py -d or
c:\Python24\python.exe bfstar.py --debug
c:\Python24\python.exe bfstar.py -i test or
c:\Python24\python.exe bfstar.py --input=foo\bar\test
c:\Python24\python.exe bfstar.py -g goal.xml or
c:\Python24\python.exe bfstar.py --goal=goal.xml
Flooding : f
BF* : bf
Lookahead BF* : l
Adaptive BF* : a (This is the default algorithm used)
So, for instance,
c:\Python24\python.exe bfstar.py -a f : run flooding algorithm
c:\Python24\python.exe bfstar.py --algo=bf : run bloom-filter algorithm
c:\Python24\python.exe bfstar.py -i test -g goal.xml -a l
In addition to the sample with dozen WSDL files, BFStar was also extensively tested against truly "large-scale" data set with 650, 1,300, 3,250, 4,850, and 6,500 web services, and each case in three distribution model -- uniform, normal and skewed.
More details are described in the technical document below. Each test case can be downloaded here:
650expo.zip : 650 web services in exponential (i.e., skewed) distribution model
650norm.zip : 650 web services in normal distribution model
650uni.zip : 650 web services in uniform distribution model
And similarly for other sizes:
1300expo.zip, 1300norm.zip, 1300uni.zip
3250expo.zip, 3250norm.zip, 3250uni.zip
4850expo.zip, 4850norm.zip, 4850uni.zip
6500expo.zip, 6500norm.zip, 6500uni.zip
All cases (15 = 3 size X 5 distributions) were tested against 5
"composition" test queries of Track B that were specified as the following 5 goal
files ("discovery" of Track A was easy, so omitted):
goal1.xml : provided:{a1}, resultant:{j5}
goal2.xml : provided:{d4,e1}, resultant:{j5}
goal3.xml : provided:{a3}, resultant:{h2,h5}
goal4.xml : provided:{e4,b4}, resultant:{h1,h2,j2,j5}
goal5.xml : provided:{c5,f2}, resultant:{d4,j5}
Full version of technical report is downloadable HERE.