Java Native Interface (JNI) bindings for libgfapi, the GlusterFS client API.
- gluster 3.4 or newer - installed from source or a gluster development package installed.
- maven 3.0.3 or newer
- auto tool chain
- Ubuntu packages: build-essential libtool pkg-config automake
If you have installed gluster to non-standard location then you export GLFS_HOME
so we know where it's at:
export GLFS_HOME=/path/to/gluster/prefix
Building without tests is simple. Just run:
mvn -Pdownlaod -Plinux64 -Dmaven.test.skip=true install
To really test this you'll need a running glusterfs volume called foo.
-
Set up a loopback interface alias, because glusterfs refuses to create a volume with a brick on localhost or 127.0.0.1
ifconfig lo:0 127.0.2.1
-
Create a glusterfs volume called foo
gluster volume create foo 127.0.2.1:/var/tmp/foo gluster volume start foo
-
Gluster requires that clients communicate from privileged source ports by default, so we need to disable this feature before testing.
-
First we need to manually fix glusterd. Edit /etc/glusterfs/glusterd.vol and add this line after the other option statements in the volume management stanza
option rpc-auth-allow-insecure on
Then restart glusterd (or glusterfs-server, as the case may be)
-
Second we need to allow insecure clients to access the bricks
gluster volume set foo server.allow-insecure on
-
Finally, since our clients will not be privileged, we need to make the volume world writable the usual way
mkdir /mnt/foo mount -t glusterfs localhost:foo /mnt/foo chmod ugo+rwx /mnt/foo umount /mnt/foo rmdir /mnt/foo
-
-
Make sure that the gluster libs are on the LD_LIBRARY_PATH.
export LD_LIBRARY_PATH=${GLUSTER_PREFIX}/lib
-
Now run the test
mvn -Pdownload -Plinux64 install
-
If successful, the test will have created a file called bar in the volume, and written hello world into it.
ls -la /var/tmp/foo cat /var/tmp/foo/bar
-
There should also be a log file generated by libgfapi in the test program, check it out
cat glfsjni/glfsjni-linux64/target/glfsjni.log
After doing a mvn install as described above the test suite can be re-run with the following command run in the top libgfapi-jni directory
mvn -Dnative-src-url=file:glfsjni/target/glfsjni-1.0-SNAPSHOT-native-src.zip -Plinux64 test
When using a test runner in your IDE you'll need to add the following Java system property
-Djava.library.path=glfsjni-linux64/target/native-build/target/lib
Until further notice (made here and in LICENSE.txt) this project is licensed under the terms of the 3-clause BSD license, as written in LICENSE.txt (and copied in several source files).
The licensing is likely to change in the near future as the project matures.