org.scalatest.concurrent

ConductorMethods

trait ConductorMethods extends AbstractSuite

Trait that provides each test with access to a new Conductor via methods.

Here's an example of the use of this trait to test the ArrayBlockingQueue concurrency abstraction from java.util.concurrent:

import org.scalatest.FunSuite
import org.scalatest.concurrent.ConductorMethods
import org.scalatest.matchers.ShouldMatchers
import java.util.concurrent.ArrayBlockingQueue

class ArrayBlockingQueueSuite extends FunSuite with ConductorMethods with ShouldMatchers {

test("calling put on a full queue blocks the producer thread") {

val buf = new ArrayBlockingQueue[Int](1)

thread("producer") { buf put 42 buf put 17 beat should be (1) }

thread("consumer") { waitForBeat(1) buf.take should be (42) buf.take should be (17) }

whenFinished { buf should be ('empty) } }

test("calling take on an empty queue blocks the consumer thread") {

val buf = new ArrayBlockingQueue[Int](1)

thread("producer") { waitForBeat(1) buf put 42 buf put 17 }

thread("consumer") { buf.take should be (42) buf.take should be (17) beat should be (1) }

whenFinished { buf should be ('empty) } } }

For an explanation of how these tests work, see the documentation for Conductor.

Inherits

  1. AbstractSuite
  2. AnyRef
  3. Any

Value Members

  1. def equals(arg0: Any): Boolean

    This method is used to compare the receiver object (this) with the argument object (arg0) for equivalence

    This method is used to compare the receiver object (this) with the argument object (arg0) for equivalence.

    The default implementations of this method is an equivalence relation:

    • It is reflexive: for any instance x of type Any, x.equals(x) should return true.
    • It is symmetric: for any instances x and y of type Any, x.equals(y) should return true if and only if y.equals(x) returns true.
    • It is transitive: for any instances x, y, and z of type AnyRef if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.

    If you override this method, you should verify that your implementation remains an equivalence relation. Additionally, when overriding this method it is often necessary to override hashCode to ensure that objects that are "equal" (o1.equals(o2) returns true) hash to the same Int (o1.hashCode.equals(o2.hashCode)).

    arg0

    the object to compare against this object for equality.

    returns

    true if the receiver object is equivalent to the argument; false otherwise.

    definition classes: AnyRef ⇐ Any
  2. def expectedTestCount(filter: Filter): Int

    The total number of tests that are expected to run when this Suite's run method is invoked

    The total number of tests that are expected to run when this Suite's run method is invoked.

    filter

    a Filter with which to filter tests to count based on their tags

    attributes: abstract
    definition classes: AbstractSuite
  3. def hashCode(): Int

    Returns a hash code value for the object

    Returns a hash code value for the object.

    The default hashing algorithm is platform dependent.

    Note that it is allowed for two objects to have identical hash codes (o1.hashCode.equals(o2.hashCode)) yet not be equal (o1.equals(o2) returns false). A degenerate implementation could always return 0. However, it is required that if two objects are equal (o1.equals(o2) returns true) that they have identical hash codes (o1.hashCode.equals(o2.hashCode)). Therefore, when overriding this method, be sure to verify that the behavior is consistent with the equals method.

    definition classes: AnyRef ⇐ Any
  4. def nestedSuites: List[Suite]

    A List of this Suite object's nested Suites

    A List of this Suite object's nested Suites. If this Suite contains no nested Suites, this method returns an empty List.

    attributes: abstract
    definition classes: AbstractSuite
  5. def run(testName: Option[String], reporter: Reporter, stopper: Stopper, filter: Filter, configMap: Map[String, Any], distributor: Option[Distributor], tracker: Tracker): Unit

    Runs this suite of tests

    Runs this suite of tests.

    testName

    an optional name of one test to execute. If None, all relevant tests should be executed. I.e., None acts like a wildcard that means execute all relevant tests in this Suite.

    reporter

    the Reporter to which results will be reported

    stopper

    the Stopper that will be consulted to determine whether to stop execution early.

    filter

    a Filter with which to filter tests based on their tags

    configMap

    a Map of key-value pairs that can be used by the executing Suite of tests.

    distributor

    an optional Distributor, into which to put nested Suites to be executed by another entity, such as concurrently by a pool of threads. If None, nested Suites will be executed sequentially.

    tracker

    a Tracker tracking Ordinals being fired by the current thread.

    attributes: abstract
    definition classes: AbstractSuite
  6. def tags: Map[String, Set[String]]

    A Map whose keys are String tag names with which tests in this Suite are marked, and whose values are the Set of test names marked with each tag

    A Map whose keys are String tag names with which tests in this Suite are marked, and whose values are the Set of test names marked with each tag. If this Suite contains no tags, this method returns an empty Map.

    Subclasses may implement this method to define and/or discover tags in a custom manner, but overriding method implementations should never return an empty Set as a value. If a tag has no tests, its name should not appear as a key in the returned Map.

    attributes: abstract
    definition classes: AbstractSuite
  7. def testNames: Set[String]

    An Set of test names

    An Set of test names. If this Suite contains no tests, this method returns an empty Set.

    Although subclass and subtrait implementations of this method may return a Set whose iterator produces String test names in a well-defined order, the contract of this method does not required a defined order. Subclasses are free to implement this method and return test names in either a defined or undefined order.

    attributes: abstract
    definition classes: AbstractSuite
  8. def toString(): String

    Returns a string representation of the object

    Returns a string representation of the object.

    The default representation is platform dependent.

    definition classes: AnyRef ⇐ Any
  9. def withFixture(test: NoArgTest): Unit

    Creates and initializes a private instance variable with a new Conductor, ensuring it is visible to any thread, invokes the passed test function, and invokes conduct on the Conductor, if it was not already invoked by the test

    Creates and initializes a private instance variable with a new Conductor, ensuring it is visible to any thread, invokes the passed test function, and invokes conduct on the Conductor, if it was not already invoked by the test.

    test

    the no-arg test function to run with a fixture