Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1368)

Unified Diff: net/test/spawned_test_server/spawner_communicator.h

Issue 992733002: Remove //net (except for Android test stuff) and sdch (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/test/spawned_test_server/spawner_communicator.h
diff --git a/net/test/spawned_test_server/spawner_communicator.h b/net/test/spawned_test_server/spawner_communicator.h
deleted file mode 100644
index ba8bfcab0e5cb687005ea6e602d6117b6c821d9d..0000000000000000000000000000000000000000
--- a/net/test/spawned_test_server/spawner_communicator.h
+++ /dev/null
@@ -1,151 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef NET_TEST_SPAWNED_TEST_SERVER_SPAWNER_COMMUNICATOR_H_
-#define NET_TEST_SPAWNED_TEST_SERVER_SPAWNER_COMMUNICATOR_H_
-
-#include <string>
-
-#include "base/basictypes.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/memory/weak_ptr.h"
-#include "base/synchronization/waitable_event.h"
-#include "base/threading/thread.h"
-#include "net/url_request/url_request.h"
-
-namespace net {
-
-class ScopedPortException;
-
-// SpawnerCommunicator communicates with a spawner server that runs on a
-// remote system.
-//
-// The test server used by unit tests is written in Python. However, Android
-// does not support running Python code, so the test server cannot run on the
-// same device running unit tests.
-//
-// The actual test server is executed on the host machine, while the unit tests
-// themselves continue running on the device. To control the test server on the
-// host machine, a second HTTP server is started, the spawner server, which
-// controls the life cycle of remote test servers. Calls to start/kill the
-// net::SpawnedTestServer are then redirected to the spawner server via
-// this spawner communicator.
-//
-// Currently only three commands are supported by spawner.
-//
-// (1) Start Python test server, format is:
-// Path: "/start".
-// Method: "POST".
-// Data to server: all arguments needed to launch the Python test server, in
-// JSON format.
-// Data from server: a JSON dict includes the following two field if success,
-// "port": the port the Python test server actually listen on that.
-// "message": must be "started".
-//
-// (2) Kill Python test server, format is:
-// Path: "/kill".
-// Method: "GET".
-// Data to server: None.
-// Data from server: String "killed" returned if success.
-//
-// (3) Ping Python test server to see whether it is alive, format is:
-// Path: "/ping".
-// Method: "GET".
-// Data to server: None.
-// Data from server: String "ready" returned if success.
-//
-// The internal I/O thread is required by net stack to perform net I/O.
-// The Start/StopServer methods block the caller thread until result is
-// fetched from spawner server or timed-out.
-class SpawnerCommunicator : public net::URLRequest::Delegate {
- public:
- explicit SpawnerCommunicator(uint16 port);
- ~SpawnerCommunicator() override;
-
- // Starts an instance of the Python test server on the host/ machine.
- // If successfully started, returns true, setting |*port| to the port
- // on the local machine that can be used to communicate with the remote
- // test server.
- bool StartServer(const std::string& arguments,
- uint16* port) WARN_UNUSED_RESULT;
-
- bool StopServer() WARN_UNUSED_RESULT;
-
- private:
- // Starts the IO thread. Called on the user thread.
- void StartIOThread();
-
- // Shuts down the remote test server spawner. Called on the user thread.
- void Shutdown();
-
- // Waits for the server response on IO thread. Called on the user thread.
- void WaitForResponse();
-
- // Sends a command to the test server over HTTP, returning the result code
- // |*result_code| and response data in |*data_received|, those two arguments
- // must be not NULL, otherwise the method returns immediately without sending
- // the |command|. If |post_data| is empty, HTTP GET will be used to send
- // |command|. If |post_data| is non-empty, performs an HTTP POST.
- // This method is called on the user thread.
- void SendCommandAndWaitForResult(const std::string& command,
- const std::string& post_data,
- int* result_code,
- std::string* data_received);
-
- // Performs the command sending on the IO thread. Called on the IO thread.
- void SendCommandAndWaitForResultOnIOThread(const std::string& command,
- const std::string& post_data,
- int* result_code,
- std::string* data_received);
-
- // URLRequest::Delegate methods. Called on the IO thread.
- void OnResponseStarted(URLRequest* request) override;
- void OnReadCompleted(URLRequest* request, int num_bytes) override;
-
- // Reads Result from the response. Called on the IO thread.
- void ReadResult(URLRequest* request);
-
- // Called on the IO thread upon completion of the spawner command.
- void OnSpawnerCommandCompleted(URLRequest* request);
-
- // Callback on the IO thread for time-out task of request with id |id|.
- void OnTimeout(int id);
-
- // A thread to communicate with test_spawner server.
- base::Thread io_thread_;
-
- // WaitableEvent to notify whether the communication is done.
- base::WaitableEvent event_;
-
- // The local port used to communicate with the TestServer spawner. This is
- // used to control the startup and shutdown of the Python TestServer running
- // on the remote machine. On Android, this port will be redirected to the
- // same port on the host machine.
- const uint16 port_;
-
- // Helper to add |port_| to the list of the globally explicitly allowed ports.
- scoped_ptr<ScopedPortException> allowed_port_;
-
- // The next ID to use for |cur_request_| (monotonically increasing).
- int next_id_;
-
- // Request context used by |cur_request_|.
- scoped_ptr<URLRequestContext> context_;
-
- // The current (in progress) request, or NULL.
- scoped_ptr<URLRequest> cur_request_;
-
- // Only gets/sets |is_running_| on user's thread to avoid race-condition.
- bool is_running_;
-
- // Factory for creating the time-out task. This takes care of revoking
- // outstanding tasks when |this| is deleted.
- base::WeakPtrFactory<SpawnerCommunicator> weak_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(SpawnerCommunicator);
-};
-
-} // namespace net
-
-#endif // NET_TEST_SPAWNED_TEST_SERVER_SPAWNER_COMMUNICATOR_H_
« no previous file with comments | « net/test/spawned_test_server/spawned_test_server.h ('k') | net/test/spawned_test_server/spawner_communicator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698