[ 
https://issues.apache.org/jira/browse/MESOS-3820?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3820:
-----------------------------
    Description: 
*Background*
Libprocess initialization includes the spawning of a variety of global 
processes and the creation of the server socket which listens for incoming 
requests.  Some properties of the server socket are configured via environment 
variables, such as the IP and port or the SSL configuration.

In the case of tests, libprocess is initialized once per test binary.  This 
means that testing different configurations (SSL in particular) is cumbersome 
as a separate process would be needed for every test case.

*Proposal*
# Add some optional code between some tests like:
{code}
// Cleanup all of libprocess's state, as if we're starting anew.
process::finalize(); 

// For tests that need to test SSL connections with the Master:
openssl::reinitialize();

process::initialize();
{code}
See [MESOS-3863] for more on {{process::finalize}}.

  was:
*Background*
Libprocess initialization includes the spawning of a variety of global 
processes and the creation of the server socket which listens for incoming 
requests.  Some properties of the server socket are configured via environment 
variables, such as the IP and port or the SSL configuration.

In the case of tests, libprocess is initialized once per test binary.  This 
means that testing different configurations (SSL in particular) is cumbersome 
as a separate process would be needed for every test case.

*Proposal* (Still under investigation)
# Investigate using {{process::finalize}} to completely clean up libprocess.  
See [MESOS-3863].
# Add a test-only {{process::reinitialize}} function, which should be roughly 
equivalent to a first-time run of {{process::initialize}}.

-*Proposal to swap out server socket*- (Does not work)
# Follow the [example of the SSL 
library|https://github.com/apache/mesos/blob/master/3rdparty/libprocess/src/openssl.cpp#L280]
 and allow tests to declare an internal function for re-initializing a portion 
of libprocess.
# Move the [existing creation of the server 
socket|https://github.com/apache/mesos/blob/master/3rdparty/libprocess/src/process.cpp#L852-L856]
 into a {{reinitialize_server_socket}} function.
# Add any necessary cleanup for swapping server sockets.
# Consider whether any additional locking is required in the 
{{reinitialize_server_socket}} function.

     Issue Type: Epic  (was: Story)
        Summary: Test-only libprocess reinitialization  (was: Refactor 
libprocess initialization to allow for test-only reinitialization of the server 
socket)

> Test-only libprocess reinitialization
> -------------------------------------
>
>                 Key: MESOS-3820
>                 URL: https://issues.apache.org/jira/browse/MESOS-3820
>             Project: Mesos
>          Issue Type: Epic
>          Components: libprocess, test
>            Reporter: Joseph Wu
>            Assignee: Joseph Wu
>              Labels: mesosphere
>
> *Background*
> Libprocess initialization includes the spawning of a variety of global 
> processes and the creation of the server socket which listens for incoming 
> requests.  Some properties of the server socket are configured via 
> environment variables, such as the IP and port or the SSL configuration.
> In the case of tests, libprocess is initialized once per test binary.  This 
> means that testing different configurations (SSL in particular) is cumbersome 
> as a separate process would be needed for every test case.
> *Proposal*
> # Add some optional code between some tests like:
> {code}
> // Cleanup all of libprocess's state, as if we're starting anew.
> process::finalize(); 
> // For tests that need to test SSL connections with the Master:
> openssl::reinitialize();
> process::initialize();
> {code}
> See [MESOS-3863] for more on {{process::finalize}}.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to