Esempio n. 1
0
 public void testMultipleWords() {
   String[] words = new String[5];
   for (int i = 0; i < words.length; i++) {
     words[i] = "Word " + i;
   }
   OutputStream output = byteQueue.getByteOutputStream();
   String[] processedWords = new String[words.length];
   try {
     OutputStreamWriter writer = new OutputStreamWriter(output);
     for (String w : words) {
       writer.write(w);
       writer.write("\n");
     }
     writer.close();
     BufferedReader reader =
         new BufferedReader(new InputStreamReader(byteQueue.getByteInputStream()));
     String line = null;
     int index = 0;
     while ((line = reader.readLine()) != null) {
       processedWords[index++] = line;
     }
   } catch (Exception ex) {
     ex.printStackTrace();
     fail("Error pushing bytes around: " + ex.getMessage());
   }
   for (int i = 0; i < words.length; i++) {
     String original = words[i];
     String processed = processedWords[i];
     assertEquals("Word was different after pushed through queue!", original, processed);
   }
 }
Esempio n. 2
0
 public void testHugeWord() {
   String word = generateRandomWord(8192);
   String processedWord = null;
   OutputStream output = byteQueue.getByteOutputStream();
   try {
     OutputStreamWriter writer = new OutputStreamWriter(output);
     writer.write(word);
     writer.close();
     BufferedReader reader =
         new BufferedReader(new InputStreamReader(byteQueue.getByteInputStream()));
     processedWord = reader.readLine();
   } catch (IOException ex) {
     ex.printStackTrace();
     fail("Error pushing bytes around: " + ex.getMessage());
   }
   assertEquals("Word was different after pushed through queue!", word, processedWord);
 }
Esempio n. 3
0
 public void testHugeWordRetrievedInPieces() {
   String word = generateRandomWord(8192);
   String processedWord = null;
   OutputStream output = byteQueue.getByteOutputStream();
   try {
     OutputStreamWriter writer = new OutputStreamWriter(output);
     writer.write(word);
     writer.close();
     InputStreamReader reader = new InputStreamReader(byteQueue.getByteInputStream());
     StringBuffer processed = new StringBuffer();
     Random rand = new Random(System.currentTimeMillis());
     char[] charBuff = new char[rand.nextInt(32) + 16];
     int charsRead = -1;
     while ((charsRead = reader.read(charBuff)) != -1) {
       processed.append(new String(charBuff, 0, charsRead));
       charBuff = new char[rand.nextInt(32) + 16];
     }
     processedWord = processed.toString();
   } catch (IOException ex) {
     ex.printStackTrace();
     fail("Error pushing bytes around: " + ex.getMessage());
   }
   assertEquals("Word was different after pushed through queue!", word, processedWord);
 }
Esempio n. 4
0
 public void testConcurrentReadWrite() {
   // generate a bunch of garbage to test
   final List<String> originalWords = new ArrayList<String>();
   for (int i = 0; i < 4; i++) {
     // originalWords.add(generateRandomWord(8192));
     originalWords.add("Word " + i);
   }
   // writer and re-reader
   final OutputStream output = byteQueue.getByteOutputStream();
   final InputStream input = byteQueue.getByteInputStream();
   // write words in to the buffer every 1000ms
   Runnable writeRunner =
       new Runnable() {
         public void run() {
           OutputStreamWriter writer = new OutputStreamWriter(output);
           Iterator<String> wordIter = originalWords.iterator();
           while (wordIter.hasNext()) {
             try {
               writer.write(wordIter.next());
               writer.write('\n');
               Thread.sleep(1000);
             } catch (Exception ex) {
               ex.printStackTrace();
             }
           }
           try {
             writer.close();
           } catch (Exception ex) {
             ex.printStackTrace();
           }
         }
       };
   final List<String> processedWords = new ArrayList<String>();
   // read bytes out as fast as possible
   Runnable readRunner =
       new Runnable() {
         public void run() {
           BufferedReader reader = new BufferedReader(new InputStreamReader(input));
           String line = null;
           try {
             while ((line = reader.readLine()) != null) {
               processedWords.add(line);
             }
           } catch (Exception ex) {
             ex.printStackTrace();
           }
         }
       };
   // start up the processes
   Thread writeThread = new Thread(writeRunner);
   Thread readThread = new Thread(readRunner);
   writeThread.start();
   readThread.start();
   try {
     writeThread.join();
     readThread.join();
   } catch (Exception ex) {
     ex.printStackTrace();
     fail("Error waiting for worker threads: " + ex.getMessage());
   }
   assertEquals(
       "Count of words after processing was not as expected",
       originalWords.size(),
       processedWords.size());
   for (int i = 0; i < originalWords.size(); i++) {
     String original = originalWords.get(i);
     String processed = processedWords.get(i);
     assertEquals("Processed word was different from original", original, processed);
   }
 }