Arquivos
hhvm/hphp/test/test_debugger.h
T
Mike Magruder 3522d9440f Remove races from the WebRequest debugger unit test
Got rid of our reliance on sleeps to ensure correct timing in the WebRequest debugger unit test. A change with a recent diff removed some of the races by waiting for the client to enter the busy state before sending an interrupt to mimic ctrl-c. Generalized that a bit, and extended it to ensure the initial handshake between the harness, debugger request, and the request to be debugged is correct. I've removed the 10s sleep on startup, and the 3s sleep after each notification from the various requests back to the harness. Also added a bunch of comments to hopefully explain the test better, and renamed some files/functions to better reflect what they're doing. This seems to work well on my box… I've run it a bunch in both dbg and opt builds to try to get it to fail but haven't yet. Fingers crossed ;)
2013-05-15 13:05:10 -07:00

67 linhas
2.1 KiB
C++

/*
+----------------------------------------------------------------------+
| HipHop for PHP |
+----------------------------------------------------------------------+
| Copyright (c) 2010- Facebook, Inc. (http://www.facebook.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| http://www.php.net/license/3_01.txt |
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
*/
#ifndef incl_HPHP_TEST_DEBUGGER_H_
#define incl_HPHP_TEST_DEBUGGER_H_
#include "hphp/test/test_base.h"
#include "hphp/runtime/base/complex_types.h"
///////////////////////////////////////////////////////////////////////////////
/**
* Testing HTTP server.
*/
class TestDebugger : public TestBase {
public:
TestDebugger();
virtual bool RunTests(const std::string &which);
// test test harness
bool TestSanity();
bool TestBasic();
bool TestBreak();
bool TestFlow();
bool TestStack();
bool TestEval();
bool TestException();
bool TestInfo();
bool TestWebRequest();
private:
int m_serverPort;
int m_adminPort;
int m_debugPort;
std::string m_fname;
void runServer();
void stopServer();
bool getResponse(const std::string& path, std::string& result, int port = -1,
const std::string& host = "");
bool recvFromTests(char& c);
void testWebRequestHelperPhase1();
void testWebRequestHelperPhase2();
bool m_tempResult;
};
///////////////////////////////////////////////////////////////////////////////
#endif // incl_HPHP_TEST_DEBUGGER_H_