[jbpm-commits] JBoss JBPM SVN: r4118 - in jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise: console and 1 other directory.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Mar 3 06:51:31 EST 2009


Author: heiko.braun at jboss.com
Date: 2009-03-03 06:51:27 -0500 (Tue, 03 Mar 2009)
New Revision: 4118

Added:
   jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/console/
   jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/console/Base64Coder.java
   jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/console/ConsoleAvailabilityTest.java
   jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/console/HTTP.java
Log:
Added ConsoleAvailabilityTest

Added: jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/console/Base64Coder.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/console/Base64Coder.java	                        (rev 0)
+++ jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/console/Base64Coder.java	2009-03-03 11:51:27 UTC (rev 4118)
@@ -0,0 +1,147 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.enterprise.console;
+
+/**
+ * A Base64 Encoder/Decoder.
+ */
+public class Base64Coder
+{
+
+   // Mapping table from 6-bit nibbles to Base64 characters.
+   private static char[]    map1 = new char[64];
+   static {
+      int i=0;
+      for (char c='A'; c<='Z'; c++) map1[i++] = c;
+      for (char c='a'; c<='z'; c++) map1[i++] = c;
+      for (char c='0'; c<='9'; c++) map1[i++] = c;
+      map1[i++] = '+'; map1[i++] = '/'; }
+
+   // Mapping table from Base64 characters to 6-bit nibbles.
+   private static byte[]    map2 = new byte[128];
+   static {
+      for (int i=0; i<map2.length; i++) map2[i] = -1;
+      for (int i=0; i<64; i++) map2[map1[i]] = (byte)i; }
+
+   /**
+    * Encodes a string into Base64 format.
+    * No blanks or line breaks are inserted.
+    * @param s  a String to be encoded.
+    * @return   A String with the Base64 encoded data.
+    */
+   public static String encodeString (String s) {
+      return new String(encode(s.getBytes())); }
+
+   /**
+    * Encodes a byte array into Base64 format.
+    * No blanks or line breaks are inserted.
+    * @param in  an array containing the data bytes to be encoded.
+    * @return    A character array with the Base64 encoded data.
+    */
+   public static char[] encode (byte[] in) {
+      return encode(in,in.length); }
+
+   /**
+    * Encodes a byte array into Base64 format.
+    * No blanks or line breaks are inserted.
+    * @param in   an array containing the data bytes to be encoded.
+    * @param iLen number of bytes to process in <code>in</code>.
+    * @return     A character array with the Base64 encoded data.
+    */
+   public static char[] encode (byte[] in, int iLen) {
+      int oDataLen = (iLen*4+2)/3;       // output length without padding
+      int oLen = ((iLen+2)/3)*4;         // output length including padding
+      char[] out = new char[oLen];
+      int ip = 0;
+      int op = 0;
+      while (ip < iLen) {
+         int i0 = in[ip++] & 0xff;
+         int i1 = ip < iLen ? in[ip++] & 0xff : 0;
+         int i2 = ip < iLen ? in[ip++] & 0xff : 0;
+         int o0 = i0 >>> 2;
+         int o1 = ((i0 &   3) << 4) | (i1 >>> 4);
+         int o2 = ((i1 & 0xf) << 2) | (i2 >>> 6);
+         int o3 = i2 & 0x3F;
+         out[op++] = map1[o0];
+         out[op++] = map1[o1];
+         out[op] = op < oDataLen ? map1[o2] : '='; op++;
+         out[op] = op < oDataLen ? map1[o3] : '='; op++; }
+      return out; }
+
+   /**
+    * Decodes a string from Base64 format.
+    * @param s  a Base64 String to be decoded.
+    * @return   A String containing the decoded data.
+    * @throws   IllegalArgumentException if the input is not valid Base64 encoded data.
+    */
+   public static String decodeString (String s) {
+      return new String(decode(s)); }
+
+   /**
+    * Decodes a byte array from Base64 format.
+    * @param s  a Base64 String to be decoded.
+    * @return   An array containing the decoded data bytes.
+    * @throws   IllegalArgumentException if the input is not valid Base64 encoded data.
+    */
+   public static byte[] decode (String s) {
+      return decode(s.toCharArray()); }
+
+   /**
+    * Decodes a byte array from Base64 format.
+    * No blanks or line breaks are allowed within the Base64 encoded data.
+    * @param in  a character array containing the Base64 encoded data.
+    * @return    An array containing the decoded data bytes.
+    * @throws    IllegalArgumentException if the input is not valid Base64 encoded data.
+    */
+   public static byte[] decode (char[] in) {
+      int iLen = in.length;
+      if (iLen%4 != 0) throw new IllegalArgumentException ("Length of Base64 encoded input string is not a multiple of 4.");
+      while (iLen > 0 && in[iLen-1] == '=') iLen--;
+      int oLen = (iLen*3) / 4;
+      byte[] out = new byte[oLen];
+      int ip = 0;
+      int op = 0;
+      while (ip < iLen) {
+         int i0 = in[ip++];
+         int i1 = in[ip++];
+         int i2 = ip < iLen ? in[ip++] : 'A';
+         int i3 = ip < iLen ? in[ip++] : 'A';
+         if (i0 > 127 || i1 > 127 || i2 > 127 || i3 > 127)
+            throw new IllegalArgumentException ("Illegal character in Base64 encoded data.");
+         int b0 = map2[i0];
+         int b1 = map2[i1];
+         int b2 = map2[i2];
+         int b3 = map2[i3];
+         if (b0 < 0 || b1 < 0 || b2 < 0 || b3 < 0)
+            throw new IllegalArgumentException ("Illegal character in Base64 encoded data.");
+         int o0 = ( b0       <<2) | (b1>>>4);
+         int o1 = ((b1 & 0xf)<<4) | (b2>>>2);
+         int o2 = ((b2 &   3)<<6) |  b3;
+         out[op++] = (byte)o0;
+         if (op<oLen) out[op++] = (byte)o1;
+         if (op<oLen) out[op++] = (byte)o2; }
+      return out; }
+
+   // Dummy constructor.
+   private Base64Coder() {}
+
+} // end class Base64Coder

Added: jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/console/ConsoleAvailabilityTest.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/console/ConsoleAvailabilityTest.java	                        (rev 0)
+++ jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/console/ConsoleAvailabilityTest.java	2009-03-03 11:51:27 UTC (rev 4118)
@@ -0,0 +1,47 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.enterprise.console;
+
+import junit.framework.TestCase;
+
+/**
+ * @author Heiko.Braun <heiko.braun at jboss.com>
+ */
+public class ConsoleAvailabilityTest extends TestCase
+{
+
+  /**
+   * Verify if the console has been deployed successfully
+   * @throws Exception
+   */
+  public void testConsoleDeployment()
+      throws Exception
+  {
+    String bindAddress = System.getProperty("jboss.bind.address");
+    String host = bindAddress !=null ? bindAddress : "localhost:8080";
+    if(host.indexOf(":")==-1) host = (host+":8080"); // default port
+
+    System.out.println("Console URL: " + host);
+    String response = HTTP.get("http://"+host +"/jbpm-consol2e", null, true); // no auth
+  }
+
+}

Added: jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/console/HTTP.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/console/HTTP.java	                        (rev 0)
+++ jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/console/HTTP.java	2009-03-03 11:51:27 UTC (rev 4118)
@@ -0,0 +1,214 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.enterprise.console;
+
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.UUID;
+
+/**
+ * @author Heiko.Braun <heiko.braun at jboss.com>
+ */
+public class HTTP
+{
+  public static String post(String urlString, InputStream inputStream, String[] credentials)
+      throws Exception
+  {
+
+    HttpURLConnection conn = null;
+    BufferedReader br = null;
+    DataOutputStream dos = null;
+    DataInputStream inStream = null;
+
+    InputStream is = null;
+    OutputStream os = null;
+    boolean ret = false;
+    String StrMessage = "";
+
+
+    String lineEnd = "\r\n";
+    String twoHyphens = "--";
+    String boundary =  "*****";
+
+
+    int bytesRead, bytesAvailable, bufferSize;
+
+    byte[] buffer;
+
+    int maxBufferSize = 1*1024*1024;
+
+    String responseFromServer = "";
+
+    try
+    {
+      //------------------ CLIENT REQUEST
+
+      // open a URL connection to the Servlet
+
+      URL url = new URL(urlString);
+
+
+      // Open a HTTP connection to the URL
+
+      conn = (HttpURLConnection) url.openConnection();
+
+      if(credentials!=null)
+        applyCredentials(credentials, conn);
+
+      // Allow Inputs
+      conn.setDoInput(true);
+
+      // Allow Outputs
+      conn.setDoOutput(true);
+
+      // Don't use a cached copy.
+      conn.setUseCaches(false);
+
+      // Use a post method.
+      conn.setRequestMethod("POST");
+
+      conn.setRequestProperty("Connection", "Keep-Alive");
+
+      conn.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary);
+
+      dos = new DataOutputStream( conn.getOutputStream() );
+
+      dos.writeBytes(twoHyphens + boundary + lineEnd);
+      dos.writeBytes("Content-Disposition: form-data; name=\"upload\";"
+          + " filename=\"" + UUID.randomUUID().toString() +"\"" + lineEnd);
+      dos.writeBytes(lineEnd);
+
+      // create a buffer of maximum size
+      bytesAvailable = inputStream.available();
+      bufferSize = Math.min(bytesAvailable, maxBufferSize);
+      buffer = new byte[bufferSize];
+
+      // read file and write it into form...
+      bytesRead = inputStream.read(buffer, 0, bufferSize);
+
+      while (bytesRead > 0)
+      {
+        dos.write(buffer, 0, bufferSize);
+        bytesAvailable = inputStream.available();
+        bufferSize = Math.min(bytesAvailable, maxBufferSize);
+        bytesRead = inputStream.read(buffer, 0, bufferSize);
+      }
+
+      // send multipart form data necesssary after file data...
+
+      dos.writeBytes(lineEnd);
+      dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
+
+      // close streams
+
+      inputStream.close();
+      dos.flush();
+      dos.close();
+
+    }
+    catch (MalformedURLException ex)
+    {
+      throw ex;
+    }
+
+    catch (IOException ioe)
+    {
+      throw ioe;
+    }
+
+
+    //------------------ read the SERVER RESPONSE
+
+    StringBuffer sb = new StringBuffer();
+
+    try
+    {
+      inStream = new DataInputStream ( conn.getInputStream() );
+      String str;
+      while (( str = inStream.readLine()) != null)
+      {
+        sb.append(str).append("");
+      }
+      inStream.close();
+
+    }
+    catch (IOException ioex)
+    {
+      System.out.println("From (ServerResponse): "+ioex);
+
+    }
+
+
+    return sb.toString();
+
+  }
+
+  private static void applyCredentials(String[] credentials, HttpURLConnection conn)
+  {
+    String userPassword = credentials[0]+":"+credentials[1];
+    String encoding = new String(Base64Coder.encode (userPassword.getBytes()));
+    conn.setRequestProperty ("Authorization", "Basic " + encoding);
+  }
+
+  public static String get(String urlString, String[] credentials, boolean throwServerError)
+  {
+    StringBuffer sb = new StringBuffer();
+    try
+    {
+      URL url = new URL(urlString);
+      HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+      if(credentials!=null)
+        applyCredentials(credentials, conn);
+
+
+      if(throwServerError && conn.getResponseCode()!=200)
+      {
+        throw new RuntimeException("Server response " + conn.getResponseCode());         
+      }
+
+      BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
+      String str;
+
+
+      while ((str = in.readLine()) != null)
+      {
+        sb.append(str);
+      }
+
+      in.close();
+    }
+    catch (MalformedURLException e)
+    {
+      throw new RuntimeException(e);
+    }
+    catch (IOException e)
+    {
+      throw new RuntimeException(e);
+    }
+
+    return sb.toString();
+  }
+}
+
+




More information about the jbpm-commits mailing list