summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNils Schwabe2014-06-05 12:34:12 +0200
committerNils Schwabe2014-06-05 12:34:12 +0200
commit98cfa2231cb0931fd1d3f6d6582becfd359881f9 (patch)
tree70a0c21ff4ecec49cfea447cabadfed6fd7ef8f4
parentAdd webinterface with functionallity (diff)
downloadmasterserver-98cfa2231cb0931fd1d3f6d6582becfd359881f9.tar.gz
masterserver-98cfa2231cb0931fd1d3f6d6582becfd359881f9.tar.xz
masterserver-98cfa2231cb0931fd1d3f6d6582becfd359881f9.zip
Started to implement download of images
-rw-r--r--src/main/java/org/openslx/imagemaster/db/DbFtpUser.java36
-rw-r--r--src/main/java/org/openslx/imagemaster/db/DbImage.java15
-rw-r--r--src/main/java/org/openslx/imagemaster/ftp/FtpCredentialsScheduler.java4
-rw-r--r--src/main/java/org/openslx/imagemaster/ftp/ImageProcessor.java16
-rw-r--r--src/main/java/org/openslx/imagemaster/ftp/MasterFtpServer.java129
-rw-r--r--src/main/java/org/openslx/imagemaster/ftp/MasterFtplet.java19
-rw-r--r--src/main/java/org/openslx/imagemaster/server/ApiServer.java25
-rw-r--r--src/main/java/org/openslx/imagemaster/thrift/server/ImageServerHandler.java9
-rw-r--r--src/main/thrift/imagemaster.thrift4
-rw-r--r--src/test/java/org/openslx/imagemaster/ServerTest.java12
10 files changed, 235 insertions, 34 deletions
diff --git a/src/main/java/org/openslx/imagemaster/db/DbFtpUser.java b/src/main/java/org/openslx/imagemaster/db/DbFtpUser.java
new file mode 100644
index 0000000..ea8a79f
--- /dev/null
+++ b/src/main/java/org/openslx/imagemaster/db/DbFtpUser.java
@@ -0,0 +1,36 @@
+package org.openslx.imagemaster.db;
+
+import java.util.List;
+
+
+public class DbFtpUser
+{
+ public final String username;
+ public final String password;
+ public final String mode;
+ public final String filename;
+
+ public DbFtpUser(String username, String password, String mode, String filename)
+ {
+ this.username = username;
+ this.password = password;
+ this.mode = mode;
+ this.filename = filename;
+ }
+
+ public static List<DbFtpUser> getAllUsers()
+ {
+ return MySQL.findAll( DbFtpUser.class, "SELECT username, password, mode, filename from ftpUser" );
+ }
+
+ public static void addUser(DbFtpUser user)
+ {
+ MySQL.update( "INSERT INTO ftpUser username, password, mode, filename VALUES (? , ?, ?, ?)",
+ user.username, user.password, user.mode, user.filename);
+ }
+
+ public static DbFtpUser getUserByName(String username)
+ {
+ return MySQL.findUniqueOrNull( DbFtpUser.class, "SELECT username, password, mode, filename FROM ftpUser WHERE username=?", username );
+ }
+}
diff --git a/src/main/java/org/openslx/imagemaster/db/DbImage.java b/src/main/java/org/openslx/imagemaster/db/DbImage.java
index 5ab2c4b..2cf3922 100644
--- a/src/main/java/org/openslx/imagemaster/db/DbImage.java
+++ b/src/main/java/org/openslx/imagemaster/db/DbImage.java
@@ -24,6 +24,7 @@ public class DbImage
public final String longDescription;
public final Timestamp timestamp;
public final String ftpUser;
+ public final String ftpPassword;
public final long fileSize;
@@ -43,13 +44,14 @@ public class DbImage
this.longDescription = null;
this.timestamp = new Timestamp( 0 );
this.ftpUser = null;
+ this.ftpPassword = null;
this.fileSize = 0;
}
public DbImage(String UUID, int imageVersion, String imageName, String imagePath,
Timestamp imageCreateTime, Timestamp imageUpdateTime, int imageOwner, String contentOperatingSystem,
boolean isValid, boolean isDeleted, String shortDescription, String longDescription,
- Timestamp timestamp, String ftpUser, long fileSize)
+ Timestamp timestamp, String ftpUser, String ftpPassword, long fileSize)
{
this.UUID = UUID;
this.imageVersion = imageVersion;
@@ -65,6 +67,7 @@ public class DbImage
this.longDescription = longDescription;
this.timestamp = timestamp;
this.ftpUser = ftpUser;
+ this.ftpPassword = ftpPassword;
this.fileSize = fileSize;
}
@@ -91,7 +94,7 @@ public class DbImage
* @param ts The timestamp of inserting
* @return Affected rows
*/
- public static int insert( ImageData imageData, long ts, String ftpUser )
+ public static int insert( ImageData imageData, long ts, String ftpUser, String ftpPassword )
{
Date createTime = new Date( imageData.imageCreateTime );
Date updateTime = new Date( imageData.imageUpdateTime );
@@ -102,12 +105,12 @@ public class DbImage
return MySQL
.update(
- "INSERT INTO images (UUID, image_version, image_name, image_path, image_createTime, image_updateTime, image_owner, content_operatingSystem, status_isValid, status_isDeleted, image_shortDescription, image_longDescription, timestamp, ftpUser, fileSize) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
+ "INSERT INTO images (UUID, image_version, image_name, image_path, image_createTime, image_updateTime, image_owner, content_operatingSystem, status_isValid, status_isDeleted, image_shortDescription, image_longDescription, timestamp, ftpUser, ftpPassword, fileSize) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
imageData.uuid, imageData.imageVersion, imageData.imageName, "!uploading!",
sdf.format( createTime ), sdf.format( updateTime ), ownerId,
imageData.conentOperatingSystem, imageData.statusIsValid,
imageData.statusIsDeleted, imageData.imageShortDescription,
- imageData.imageLongDescription, sdf.format( timestamp ), ftpUser, imageData.fileSize );
+ imageData.imageLongDescription, sdf.format( timestamp ), ftpUser, ftpPassword, imageData.fileSize );
}
public String getUUID()
@@ -129,4 +132,8 @@ public class DbImage
{
return MySQL.findAll( DbImage.class, "SELECT images.UUID, images.image_version, images.image_name, images.image_path, images.image_createTime, images.image_updateTime, images.image_owner, images.content_operatingSystem, images.status_isValid, images.status_isDeleted, images.image_shortDescription, images.image_longDescription, images.timestamp, images.ftpUser, images.fileSize FROM images WHERE image_path = ?", "!uploading!" );
}
+
+ public static DbImage getImageByUUID(String uuid) {
+ return MySQL.findUniqueOrNull( DbImage.class, "SELECT images.UUID, images.image_version, images.image_name, images.image_path, images.image_createTime, images.image_updateTime, images.image_owner, images.content_operatingSystem, images.status_isValid, images.status_isDeleted, images.image_shortDescription, images.image_longDescription, images.timestamp, images.ftpUser, images.fileSize FROM images WHERE uuid = ?", uuid );
+ }
}
diff --git a/src/main/java/org/openslx/imagemaster/ftp/FtpCredentialsScheduler.java b/src/main/java/org/openslx/imagemaster/ftp/FtpCredentialsScheduler.java
index 557cc72..eba3f55 100644
--- a/src/main/java/org/openslx/imagemaster/ftp/FtpCredentialsScheduler.java
+++ b/src/main/java/org/openslx/imagemaster/ftp/FtpCredentialsScheduler.java
@@ -28,7 +28,7 @@ public class FtpCredentialsScheduler extends TimerTask
// List to save the users that need to be deleted after iterating the map
List<String> usersToDelete = new LinkedList<>();
// check all folders
- for ( Map.Entry<String, Long> entry : App.ftpServer.users.entrySet() ) {
+ for ( Map.Entry<String, MasterFtpServer.Infos> entry : App.ftpServer.users.entrySet() ) {
if ( entry == null )
continue;
String username = entry.getKey();
@@ -53,7 +53,7 @@ public class FtpCredentialsScheduler extends TimerTask
usersToDelete.add( username );
} else {
// check the creation time of the user
- if ( ( System.currentTimeMillis() - App.ftpServer.users.get( username ) ) >= timeout ) {
+ if ( ( System.currentTimeMillis() - App.ftpServer.users.get( username ).getCreateTime() ) >= timeout ) {
log.info( username + " did nothing for too long. Deleting him and his folder" );
usersToDelete.add( username );
}
diff --git a/src/main/java/org/openslx/imagemaster/ftp/ImageProcessor.java b/src/main/java/org/openslx/imagemaster/ftp/ImageProcessor.java
index ffb7e2b..8359e5a 100644
--- a/src/main/java/org/openslx/imagemaster/ftp/ImageProcessor.java
+++ b/src/main/java/org/openslx/imagemaster/ftp/ImageProcessor.java
@@ -9,7 +9,9 @@ import org.apache.log4j.Logger;
import org.openslx.imagemaster.App;
import org.openslx.imagemaster.Globals;
import org.openslx.imagemaster.Globals.PropInt;
+import org.openslx.imagemaster.db.DbFtpUser;
import org.openslx.imagemaster.db.DbImage;
+import org.openslx.imagemaster.db.DbUser;
import org.openslx.imagemaster.thrift.iface.ImageData;
import org.openslx.imagemaster.thrift.iface.ImageDataError;
import org.openslx.imagemaster.thrift.iface.ImageDataException;
@@ -22,7 +24,7 @@ public class ImageProcessor
private static HashMap<String, ImageData> images = new HashMap<>();
/**
- * After (re)starting server: check dead !uploading! images in database
+ * After (re)starting server: check for dead !uploading! images in database
*/
public static void checkUploading() {
long timeout = Globals.getPropertyInt( PropInt.FTPTIMEOUT ) * 60L * 1000L;
@@ -43,10 +45,8 @@ public class ImageProcessor
DbImage.delete( dbImage.UUID );
log.info( "Deleted dbimage from db: " + dbImage.UUID + " due to timeout");
} else {
- // add ftpUser to list
- synchronized ( App.ftpServer.users ) {
- App.ftpServer.users.put( dbImage.ftpUser, dbImage.timestamp.getTime() );
- }
+ // re add users to ftpserver
+ App.ftpServer.addUser( dbImage.ftpUser, DbFtpUser.getUserByName( dbImage.ftpUser ).password, MasterFtpServer.Mode.UPLOADING, "" );
log.info( "Added user '" + dbImage.ftpUser + "' to list again." );
// add image to process list again
@@ -106,7 +106,7 @@ public class ImageProcessor
* the data for the image to add
* @exception ImageDataException If the imagedata contains errors
*/
- public static void addImageDataToProcess( ImageData imageData, String username ) throws ImageDataException
+ public static void addImageDataToProcess( ImageData imageData, String username, String password ) throws ImageDataException
{
log.info( "Adding image to process list: " + imageData.imageName + ", submitted by " + username );
@@ -121,7 +121,7 @@ public class ImageProcessor
throw new ImageDataException(ImageDataError.INVALID_DATA, "UUID not valid.");
} else if (!imageData.imageName.matches( "^[a-zA-Z0-9_\\-]{5,50}$" )) {
throw new ImageDataException(ImageDataError.INVALID_DATA, "ImageName not valid. (Length must be 5 to 50)");
- } else if (false) { // TODO: check imageowner
+ } else if (DbUser.getUserIdByName( imageData.imageOwner ) != 0) {
throw new ImageDataException(ImageDataError.INVALID_DATA, "ImageOwner not valid.");
} else if (!imageData.conentOperatingSystem.matches( "^[\\w][-0-9a-zA-Z]{3,20}$" )) {
throw new ImageDataException(ImageDataError.INVALID_DATA, "ContentOperatingSystem not valid. (Length must be 3 to 20)");
@@ -142,7 +142,7 @@ public class ImageProcessor
}
// if everything went fine, add image to db
- DbImage.insert( imageData, System.currentTimeMillis(), username);
+ DbImage.insert( imageData, System.currentTimeMillis(), username, password);
// and to processinglist
images.put( username, imageData );
diff --git a/src/main/java/org/openslx/imagemaster/ftp/MasterFtpServer.java b/src/main/java/org/openslx/imagemaster/ftp/MasterFtpServer.java
index 9dae088..f8b8ca1 100644
--- a/src/main/java/org/openslx/imagemaster/ftp/MasterFtpServer.java
+++ b/src/main/java/org/openslx/imagemaster/ftp/MasterFtpServer.java
@@ -29,14 +29,55 @@ import org.openslx.imagemaster.util.Util;
public class MasterFtpServer implements Runnable
{
+
private static Logger log = Logger.getLogger( MasterFtpServer.class );
private FtpServer server;
private UserManager userManager;
private Listener listener;
- // key: ftpUsername, value: createTime
- public final HashMap<String, Long> users = new HashMap<>();
+ // key: ftpUsername, value: infos
+ public final HashMap<String, Infos> users = new HashMap<>();
private boolean ini = false;
+ public enum Mode
+ {
+ UPLOADING, DOWNLOADING
+ }
+
+ /**
+ * Class to hold infos of a ftp user.
+ *
+ * @author nils
+ *
+ */
+ public class Infos
+ {
+ private final Long createTime;
+ private final Mode mode;
+ private final String fileName;
+
+ public Infos(Long createTime, Mode mode, String fileName)
+ {
+ this.createTime = createTime;
+ this.mode = mode;
+ this.fileName = fileName;
+ }
+
+ public Long getCreateTime()
+ {
+ return this.createTime;
+ }
+
+ public Mode getMode()
+ {
+ return this.mode;
+ }
+
+ public String getFileName()
+ {
+ return this.fileName;
+ }
+ }
+
public void init( int port )
{
if ( ini )
@@ -77,8 +118,53 @@ public class MasterFtpServer implements Runnable
server = serverFactory.createServer();
ini = true;
}
+
+ /**
+ * Add a user with username and password.
+ * @param username
+ * @param password
+ * @param mode
+ * @param fileName the filename of the file, that is allowed to access (if downloading)
+ * @return
+ */
+ public boolean addUser( String username, String password, Mode mode, String fileName)
+ {
+ String dir = Globals.getPropertyString( Globals.PropString.FTPBASEDIR ) + "/" + username + "/";
+
+ BaseUser user = new BaseUser();
+ user.setName( username );
+ user.setPassword( password );
+ List<Authority> authorities = new ArrayList<Authority>();
+
+ String file = "";
+
+ if (mode == Mode.UPLOADING) {
+ user.setHomeDirectory( dir );
+ // uploading satellite is allowed to write
+ authorities.add( new WritePermission() );
+ } else if (mode == Mode.DOWNLOADING) {
+ // the downloading satellite may access the whole dir, but this is restricted in MasterFtplet
+ user.setHomeDirectory( Globals.getPropertyString( Globals.PropString.FTPBASEDIR ) );
+ // downloading satellite is only allowed to read
+ file = fileName;
+ }
+
+ user.setAuthorities( authorities );
+
+ try {
+ userManager.save( user );
+ synchronized ( users ) {
+ users.put( username, new Infos( System.currentTimeMillis(), mode, file) );
+
+ }
+ } catch ( FtpException e ) {
+ return false;
+ }
+
+ return true;
+ }
- public FtpCredentials addUser( final String serverSessionId )
+ public FtpCredentials addUser( final String serverSessionId, Mode mode, String fileName )
{
FtpCredentials ftpCredentials = null;
@@ -88,26 +174,38 @@ public class MasterFtpServer implements Runnable
String dir = Globals.getPropertyString( Globals.PropString.FTPBASEDIR ) + "/"
+ generatedUser + "/";
- if ( !new File( dir ).mkdir() ) {
- return ftpCredentials;
- }
-
BaseUser user = new BaseUser();
user.setName( generatedUser );
user.setPassword( generatedPass );
- user.setHomeDirectory( dir );
-
List<Authority> authorities = new ArrayList<Authority>();
- authorities.add( new WritePermission() );
+
+ String file = "";
+
+ if (mode == Mode.UPLOADING) {
+ // uploading satellite needs a folder
+ if ( !new File( dir ).mkdir() ) {
+ return null;
+ }
+ user.setHomeDirectory( dir );
+ // uploading satellite is allowed to write
+ authorities.add( new WritePermission() );
+ } else if (mode == Mode.DOWNLOADING) {
+ // the downloading satellite may access the whole dir, but this is restricted in MasterFtplet
+ user.setHomeDirectory( Globals.getPropertyString( Globals.PropString.FTPBASEDIR ) );
+ // downloading satellite is only allowed to read
+ file = fileName;
+ }
+
user.setAuthorities( authorities );
try {
userManager.save( user );
ftpCredentials = new FtpCredentials( generatedUser, generatedPass );
synchronized ( users ) {
- users.put( ftpCredentials.username, System.currentTimeMillis());
+ users.put( ftpCredentials.username, new Infos( System.currentTimeMillis(), mode, file) );
}
} catch ( FtpException e ) {
+ // TODO: handle this
}
log.info( "Generated user/pass: " + generatedUser + "\t"
@@ -124,10 +222,11 @@ public class MasterFtpServer implements Runnable
try {
// first find active session and close it
Iterator<FtpIoSession> iter = listener.getActiveSessions().iterator();
- while (iter.hasNext()) {
- FtpIoSession session = (FtpIoSession) iter.next();
- if (session.getUser() == null) continue;
- if (session.getUser().getName() == username) {
+ while ( iter.hasNext() ) {
+ FtpIoSession session = (FtpIoSession)iter.next();
+ if ( session.getUser() == null )
+ continue;
+ if ( session.getUser().getName() == username ) {
session.close();
}
}
diff --git a/src/main/java/org/openslx/imagemaster/ftp/MasterFtplet.java b/src/main/java/org/openslx/imagemaster/ftp/MasterFtplet.java
index 5e12628..31d39dc 100644
--- a/src/main/java/org/openslx/imagemaster/ftp/MasterFtplet.java
+++ b/src/main/java/org/openslx/imagemaster/ftp/MasterFtplet.java
@@ -9,7 +9,9 @@ import org.apache.ftpserver.ftplet.FtpSession;
import org.apache.ftpserver.ftplet.Ftplet;
import org.apache.ftpserver.ftplet.FtpletContext;
import org.apache.ftpserver.ftplet.FtpletResult;
+import org.apache.ftpserver.ftplet.User;
import org.apache.log4j.Logger;
+import org.openslx.imagemaster.App;
public class MasterFtplet implements Ftplet
{
@@ -33,6 +35,23 @@ public class MasterFtplet implements Ftplet
{
if ( session.getUser() != null ) {
log.info( session.getUser().getName() + " issued command: " + request.getRequestLine() );
+ // check if masterserver is still knowing this user
+ if (App.ftpServer.users.containsKey( session.getUser().getName() )) {
+ MasterFtpServer.Infos infos = App.ftpServer.users.get( session.getUser().getName() );
+ if (infos.getMode() == MasterFtpServer.Mode.DOWNLOADING) {
+ if (request.getCommand() == "RETR") {
+ // check if user is getting the right file
+ if (infos.getFileName() != request.getArgument()) {
+ throw new FtpException( "550 File unavailable." );
+ }
+ }
+ // TODO: block all other commands except login and retrieve
+ }
+ } else {
+ // user is not valid anymore
+ throw new FtpException( "430 Invalid username or password." ); // ERROR CODE 430 --> invalid username or password
+ }
+
}
return null;
}
diff --git a/src/main/java/org/openslx/imagemaster/server/ApiServer.java b/src/main/java/org/openslx/imagemaster/server/ApiServer.java
index 53ddc71..ab1b88a 100644
--- a/src/main/java/org/openslx/imagemaster/server/ApiServer.java
+++ b/src/main/java/org/openslx/imagemaster/server/ApiServer.java
@@ -7,8 +7,10 @@ import org.apache.log4j.Logger;
import org.apache.thrift.TException;
import org.openslx.imagemaster.App;
import org.openslx.imagemaster.Globals;
+import org.openslx.imagemaster.db.DbImage;
import org.openslx.imagemaster.db.DbSatellite;
import org.openslx.imagemaster.ftp.ImageProcessor;
+import org.openslx.imagemaster.ftp.MasterFtpServer;
import org.openslx.imagemaster.serversession.ServerAuthenticator;
import org.openslx.imagemaster.serversession.ServerSession;
import org.openslx.imagemaster.serversession.ServerSessionManager;
@@ -103,7 +105,7 @@ public class ApiServer
}
// create new user
- FtpCredentials ftpCredentials = App.ftpServer.addUser( serverSessionId );
+ FtpCredentials ftpCredentials = App.ftpServer.addUser( serverSessionId , MasterFtpServer.Mode.UPLOADING, "");
if ( ftpCredentials == null ) {
log.error( "Could not create ftp credentials" );
@@ -111,7 +113,7 @@ public class ApiServer
}
try {
- ImageProcessor.addImageDataToProcess( imageDescription, ftpCredentials.username );
+ ImageProcessor.addImageDataToProcess( imageDescription, ftpCredentials.username, ftpCredentials.password );
} catch (ImageDataException e) {
App.ftpServer.removeUser( serverSessionId );
throw new ImageDataException( ImageDataError.INVALID_DATA, e.getMessage() );
@@ -205,4 +207,23 @@ public class ApiServer
return true;
}
+ public static FtpCredentials getImage( String uuid, String serverSessionId ) throws AuthorizationException, ImageDataException
+ {
+ if ( ServerSessionManager.getSession( serverSessionId ) == null ) {
+ throw new AuthorizationException( AuthorizationError.NOT_AUTHENTICATED, "No valid serverSessionData" );
+ }
+
+ // check if image exists
+ DbImage image = DbImage.getImageByUUID( uuid );
+
+ if (image == null) throw new ImageDataException( ImageDataError.UNKNOWN_IMAGE, "No image found with uuid '" + uuid + "'");
+
+ FtpCredentials ftpCredentials = App.ftpServer.addUser( serverSessionId, MasterFtpServer.Mode.DOWNLOADING, image.imagePath );
+
+ // TODO: what is happening here?
+ if (ftpCredentials == null) return null;
+
+ return ftpCredentials;
+ }
+
}
diff --git a/src/main/java/org/openslx/imagemaster/thrift/server/ImageServerHandler.java b/src/main/java/org/openslx/imagemaster/thrift/server/ImageServerHandler.java
index d3db11e..c8a3a4a 100644
--- a/src/main/java/org/openslx/imagemaster/thrift/server/ImageServerHandler.java
+++ b/src/main/java/org/openslx/imagemaster/thrift/server/ImageServerHandler.java
@@ -60,8 +60,7 @@ public class ImageServerHandler implements ImageServer.Iface
}
@Override
- public FtpCredentials submitImage( String serverSessionId,
- ImageData imageDescription ) throws AuthorizationException, ImageDataException
+ public FtpCredentials submitImage( String serverSessionId, ImageData imageDescription ) throws AuthorizationException, ImageDataException
{
return ApiServer.submitImage( serverSessionId, imageDescription );
}
@@ -72,4 +71,10 @@ public class ImageServerHandler implements ImageServer.Iface
return ApiServer.finishedUpload( ftpUser, imageDescription );
}
+ @Override
+ public FtpCredentials getImage( String uuid, String serverSessionId ) throws AuthorizationException, ImageDataException
+ {
+ return ApiServer.getImage( uuid, serverSessionId );
+ }
+
}
diff --git a/src/main/thrift/imagemaster.thrift b/src/main/thrift/imagemaster.thrift
index 97f4f27..224ed75 100644
--- a/src/main/thrift/imagemaster.thrift
+++ b/src/main/thrift/imagemaster.thrift
@@ -108,7 +108,9 @@ service ImageServer {
FtpCredentials submitImage(1:string serverSessionId, 2:ImageData imageDescription) throws (1:AuthorizationException failure, 2: ImageDataException failure2),
- bool finshedUpload(1:string ftpUser, 2:ImageData imageDescription) throws (1: ImageDataException failure)
+ bool finshedUpload(1:string ftpUser, 2:ImageData imageDescription) throws (1: ImageDataException failure),
+
+ FtpCredentials getImage(1:UUID uuid, 2:string serverSessionId) throws (1:AuthorizationException failure, 2: ImageDataException failure2)
}
diff --git a/src/test/java/org/openslx/imagemaster/ServerTest.java b/src/test/java/org/openslx/imagemaster/ServerTest.java
index f6286cc..969af13 100644
--- a/src/test/java/org/openslx/imagemaster/ServerTest.java
+++ b/src/test/java/org/openslx/imagemaster/ServerTest.java
@@ -66,6 +66,18 @@ public class ServerTest extends TestCase
assertTrue(true);
}
+ public void testSomething() throws TException {
+ TTransport transport = new TSocket("localhost", 9090);
+ transport.open();
+
+ TProtocol protocol = new TBinaryProtocol(transport);
+ Client client = new Client(protocol);
+
+ assertTrue( "Could not ping server", client.ping() );
+
+ client.getImage( "8fbaf5cb-ebf6-11e3-996b-f5a55bd7273c", "" );
+ }
+
/**
* Test the authentication
*