コード例 #1
0
ファイル: AtomicTest.java プロジェクト: R1kM/Pathfinder
  @Test
  public void testBlockedInAtomic() {
    if (verifyDeadlock("+cg.enable_atomic")) {
      Runnable r =
          new Runnable() {

            @Override
            public synchronized void run() {
              System.out.println("T notifying..");
              this.notify();
            }
          };

      Thread t = new Thread(r);

      synchronized (r) {
        System.out.println("main going atomic, holding r lock");
        Verify.beginAtomic();
        t.start();

        try {
          System.out.println("main waiting on r");
          r.wait();
        } catch (InterruptedException x) {
          System.out.println("main got interrupted");
        }
        System.out.println("main leaving atomic");
        Verify.endAtomic();
      }
    }
  }
コード例 #2
0
ファイル: AtomicTest.java プロジェクト: R1kM/Pathfinder
  @Test
  public void testNoRace() {
    if (verifyNoPropertyViolation("+cg.enable_atomic")) {
      Runnable r =
          new Runnable() {

            @Override
            public void run() {
              System.out.println("  enter run in Thread-0");
              assert data == 42;
              data += 1;
              assert data == 43;
              data -= 1;
              assert data == 42;
              System.out.println("  exit run in Thread-0");
            }
          };

      Thread t = new Thread(r);

      Verify.beginAtomic();
      System.out.println("enter atomic section in main");
      t.start();
      assert data == 42;
      data += 2;
      assert data == 44;
      data -= 2;
      assert data == 42;
      System.out.println("exit atomic section in main");
      Verify.endAtomic();
    }
  }
コード例 #3
0
ファイル: AtomicTest.java プロジェクト: R1kM/Pathfinder
  @Test
  public void testDataCG() {
    if (verifyNoPropertyViolation("+cg.enable_atomic")) {
      Runnable r =
          new Runnable() {

            @Override
            public void run() {
              data += 10;
            }
          };

      Thread t = new Thread(r);

      Verify.beginAtomic();
      t.start();
      int i = Verify.getInt(1, 2);
      data += i;
      assert data < 45 : "data got incremented: " + data;
      Verify.incrementCounter(0);
      assert i == Verify.getCounter(0);
      Verify.endAtomic();
    }
  }