demery-pivotal opened a new pull request #6720:
URL: https://github.com/apache/geode/pull/6720


   This commit changes Geode's build system to run test worker processes
   outside of Docker. It replaces the Dockerized test plugin with a new
   plugin that assigns each test worker process a distinct range of ports.
   
   BUILD SYSTEM
   
   Changed `multi-process-test.gradle` to mark relevant test tasks as
   isolated tests. The `IsolatedTestPlugin` applies itself to test tasks
   marked this way.
   
   DOCKERIZED TEST PLUGIN
   
   Removed the dockerized test plugin.
   
   SPECIFY PORT RANGES VIA SYSTEM PROPERTIES
   
   Added `AvailablePort.lowerBound` and `AvailablePort.upperBound` system
   properties to specify the range of non-membership ports considered by
   the "get random port" methods of `AvaiablePort` and
   `AvailablePortHelper`.
   
   Changed `AvailablePort` and `AvailablePortHelper` to use the membership
   port range specified by Geode's existing `membership-port-range` system
   property, if defined.
   
   Changed `ProcessManager`to forward the test worker JVM's port range
   system properties to each child VM it creates.
   
   ISOLATED TEST PLUGIN
   
   Added the `IsolatedTestPlugin`, which overrides Gradle's built-in test
   worker process launcher with a custom mechanism:
   
   - `PortRange`: Defines a range of ports.
   - `PortRangeContext`: Defines the membership and non-membership port
     ranges for a process. Configures each `ProcessBuilder` to set the port
     range system properties for the process being launched.
   - `CompletableProcess`: Wraps a regular Java `Process` to execute an
     action on termination.
   - `PortRangeProcessLauncher`: Assigns each test worker process a
     distinct port range context. Launches test worker processes. Wraps
     each test worker `Process` in a `CompletableProcess` that releases its
     port range context when the process terminates.
   
   SPECIFIC TESTS
   
   Changed several tests in `DistributedSystemDUnitTest` and
   `InternalDistributedSystemJUnitTest` to clear the port range system
   properties added by the `IsolatedTestPlugin`. These tests verify that
   the system applies Geode's default port ranges. For these tests to work,
   those system properties must not be defined.
   
   Disabled a `NetstatDUnitTest` test that executes `lsof`. When this test
   runs CI outside of a Docker container, in the presence of dozens of
   tests and potentially hundreds of Geode members, the output of `lsof` is
   enormous. The `NetstatFunction` attempts to collect all of the output in
   memory, which results in an out of memory exception.
   
   Co-authored-by: Dale Emery <[email protected]>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to