@Override
 public void onDestroy() {
   super.onDestroy();
   if (mThumbnailer != null) mThumbnailer.clearJobs();
   mBarrier.reset();
   mVideoAdapter.clear();
 }
  private void sendRequest(int id, int count) throws Exception {
    int idx = id - 1;

    if (idx < 0) throw new IllegalArgumentException("Connection ID <= 0");

    _socket[idx] =
        _socket[idx] == null ? new Socket("localhost", _connector.getLocalPort()) : _socket[idx];
    _out[idx] =
        _out[idx] == null ? new PrintWriter(_socket[idx].getOutputStream(), true) : _out[idx];
    _in[idx] =
        _in[idx] == null
            ? new BufferedReader(new InputStreamReader(_socket[idx].getInputStream()))
            : _in[idx];

    _connect.reset();

    _out[idx].write("GET / HTTP/1.1\r\nHost: localhost\r\n\r\n");
    _out[idx].flush();

    _connect.await();

    assertEquals(count, _statistics.getConnectionsOpen());

    String line = _in[idx].readLine();
    while (line != null) {
      if ("Server response".equals(line)) break;
      line = _in[idx].readLine();
    }
  }
示例#3
0
  @Override
  public int scan(
      String keyspace,
      String lowerBound,
      int recordCount,
      Set<String> columns,
      Vector<HashMap<String, ByteIterator>> result) {
    try {
      byte[] ks = keyspace.getBytes(UTF8);
      ClientResponse response =
          m_client.callProcedure("Scan", ks, lowerBound, lowerBound.getBytes(UTF8), recordCount);
      if (response.getStatus() != ClientResponse.SUCCESS) {
        return 1;
      }

      int nFound = 0;
      String partKey = lowerBound;
      CyclicBarrier barrier = new CyclicBarrier(2);
      result.ensureCapacity(recordCount);
      ScanCallback callback = null;
      boolean proceed = true;
      while (proceed) {
        if (response.getStatus() != ClientResponse.SUCCESS) {
          return 1;
        }
        VoltTable table = response.getResults()[0];
        nFound += table.getRowCount();
        proceed = nFound < recordCount && (partKey = nextPartitionKey(partKey)) != null;
        if (proceed) {
          barrier.reset();
          callback = new ScanCallback(barrier);
          m_client.callProcedure(callback, "Scan", ks, partKey, null, recordCount - nFound);
        }

        while (table.advanceRow()) {
          result.add(unpackRowData(table, columns));
        }

        if (proceed) {
          barrier.await();
          response = callback.response;
        }
      }
      return 0;
    } catch (Exception e) {
      e.printStackTrace();
      return 1;
    }
  }
  @Test
  public void testCloseDuringPendingRequest() throws Exception {
    CyclicBarrier beforeRequest = new CyclicBarrier(2);
    CyclicBarrier afterRequest = new CyclicBarrier(2);
    StaticRequestProcessor processor = new StaticRequestProcessor(beforeRequest, afterRequest);
    processor.setResponse(
        new TestingResponse(
            HttpStatus.NO_CONTENT, ImmutableListMultimap.<String, String>of(), new byte[0]));

    CyclicBarrier requestComplete = new CyclicBarrier(2);
    TestingClientCallback callback = new TestingClientCallback(requestComplete);

    URI location = URI.create("http://localhost:8080");
    HttpPageBufferClient client =
        new HttpPageBufferClient(
            new TestingHttpClient(processor, executor),
            new DataSize(10, Unit.MEGABYTE),
            new Duration(1, TimeUnit.MINUTES),
            location,
            callback,
            blockEncodingManager,
            executor,
            Stopwatch.createUnstarted());

    assertStatus(client, location, "queued", 0, 0, 0, 0, "not scheduled");

    // send request
    client.scheduleRequest();
    beforeRequest.await(10, TimeUnit.SECONDS);
    assertStatus(client, location, "running", 0, 1, 0, 0, "PROCESSING_REQUEST");
    assertEquals(client.isRunning(), true);
    // request is pending, now close it
    client.close();

    try {
      requestComplete.await(10, TimeUnit.SECONDS);
    } catch (BrokenBarrierException ignored) {
    }
    try {
      afterRequest.await(10, TimeUnit.SECONDS);
    } catch (BrokenBarrierException ignored) {
      afterRequest.reset();
    }
    // client.close() triggers a DELETE request, so wait for it to finish
    beforeRequest.await(10, TimeUnit.SECONDS);
    afterRequest.await(10, TimeUnit.SECONDS);
    requestComplete.await(10, TimeUnit.SECONDS);
    assertStatus(client, location, "closed", 0, 1, 2, 1, "not scheduled");
  }
示例#5
0
    void resetForTxn() {
      synchronized (barrier1) {
        if (barrier1.isBroken()) {
          barrier1.reset();
        }
      }
      synchronized (barrier2) {
        if (barrier2.isBroken()) {
          barrier2.reset();
        }
      }

      synchronized (txnBarrier) {
        if (txnBarrier.isBroken()) {
          txnBarrier.reset();
        }
      }
      try {
        txnBarrier.await();
      } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    }
 public void resetBarrier() {
   mBarrier.reset();
 }
  @Test(timeout = 10000)
  public void testIntervalTimerWithoutFire() throws Exception {
    String str = "";
    str += "package org.simple \n";
    str += "global java.util.List list \n";
    str += "rule xxx \n";
    str += "  timer (int:30s 10s) ";
    str += "when \n";
    str += "then \n";
    str += "  list.add(\"fired\"); \n";
    str += "end  \n";

    KieSessionConfiguration conf = KnowledgeBaseFactory.newKnowledgeSessionConfiguration();
    conf.setOption(ClockTypeOption.get("pseudo"));

    KnowledgeBase kbase = loadKnowledgeBaseFromString(str);
    KieSession ksession = createKnowledgeSession(kbase, conf);

    final BlockingQueue<TimedRuleExecution> queue = new LinkedBlockingQueue<TimedRuleExecution>();
    ((StatefulKnowledgeSessionImpl) ksession).session.setTimedExecutionsQueue(queue);

    final CyclicBarrier barrier = new CyclicBarrier(2);
    final AtomicBoolean run = new AtomicBoolean(true);

    Thread t =
        new Thread(
            new Runnable() {
              public void run() {
                try {
                  while (run.get()) {
                    queue.take().evauateAndFireRule();
                    try {
                      barrier.await();
                    } catch (BrokenBarrierException e) {
                      throw new RuntimeException(e);
                    }
                  }
                } catch (InterruptedException e) {
                  throw new RuntimeException(e);
                }
              }
            });
    t.setDaemon(true);
    t.start();

    List list = new ArrayList();

    PseudoClockScheduler timeService =
        (PseudoClockScheduler) ksession.<SessionClock>getSessionClock();
    timeService.advanceTime(new Date().getTime(), TimeUnit.MILLISECONDS);

    ksession.setGlobal("list", list);

    ksession.fireAllRules();
    assertEquals(0, list.size());

    timeService.advanceTime(35, TimeUnit.SECONDS);
    barrier.await();
    barrier.reset();
    assertEquals(1, list.size());

    timeService.advanceTime(10, TimeUnit.SECONDS);
    barrier.await();
    barrier.reset();
    assertEquals(2, list.size());

    timeService.advanceTime(10, TimeUnit.SECONDS);
    barrier.await();
    barrier.reset();
    assertEquals(3, list.size());

    run.set(false);
    barrier.reset();
  }