Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
N
node-http-proxy
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
node-http-proxy
Commits
095e86aa
Commit
095e86aa
authored
Jul 24, 2010
by
indexzero
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[test] Updated tests to include support for latent requests
parent
ead7567d
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
74 additions
and
21 deletions
+74
-21
lib/node-proxy.js
lib/node-proxy.js
+1
-0
test/node-proxy-test.js
test/node-proxy-test.js
+73
-21
No files found.
lib/node-proxy.js
View file @
095e86aa
...
@@ -43,6 +43,7 @@ exports.NodeProxy.prototype = {
...
@@ -43,6 +43,7 @@ exports.NodeProxy.prototype = {
init
:
function
(
req
,
res
)
{
init
:
function
(
req
,
res
)
{
this
.
events
=
[];
this
.
events
=
[];
var
self
=
this
;
this
.
onData
=
function
()
{
this
.
onData
=
function
()
{
self
.
events
.
push
([
'
data
'
].
concat
(
self
.
toArray
(
arguments
)));
self
.
events
.
push
([
'
data
'
].
concat
(
self
.
toArray
(
arguments
)));
...
...
test/node-proxy-test.js
View file @
095e86aa
...
@@ -15,6 +15,7 @@ var vows = require('vows'),
...
@@ -15,6 +15,7 @@ var vows = require('vows'),
require
.
paths
.
unshift
(
require
(
'
path
'
).
join
(
__dirname
,
'
../lib/
'
));
require
.
paths
.
unshift
(
require
(
'
path
'
).
join
(
__dirname
,
'
../lib/
'
));
var
NodeProxy
=
require
(
'
node-proxy
'
).
NodeProxy
;
var
NodeProxy
=
require
(
'
node-proxy
'
).
NodeProxy
;
var
testServers
=
{};
//
//
// Simple 'hello world' response for test purposes
// Simple 'hello world' response for test purposes
...
@@ -28,39 +29,69 @@ var helloWorld = function(req, res) {
...
@@ -28,39 +29,69 @@ var helloWorld = function(req, res) {
//
//
// Creates the reverse proxy server
// Creates the reverse proxy server
//
//
var
startProxy
=
function
(
server
,
port
,
proxy
)
{
var
startProxy
Server
=
function
(
server
,
port
,
proxy
)
{
http
.
createServer
(
function
(
req
,
res
){
var
proxyServer
=
http
.
createServer
(
function
(
req
,
res
){
// Initialize the nodeProxy and start proxying the request
// Initialize the nodeProxy and start proxying the request
proxy
.
init
(
req
,
res
);
proxy
.
init
(
req
,
res
);
proxy
.
proxyRequest
(
server
,
port
,
req
,
res
);
proxy
.
proxyRequest
(
server
,
port
,
req
,
res
);
}).
listen
(
8080
);
});
proxyServer
.
listen
(
8080
);
return
proxyServer
;
};
//
// Creates the reverse proxy server with a specified latency
//
var
startLatentProxyServer
=
function
(
server
,
port
,
proxy
,
latency
)
{
var
proxyServer
=
http
.
createServer
(
function
(
req
,
res
){
// Initialize the nodeProxy and start proxying the request
proxy
.
init
(
req
,
res
);
setTimeout
(
function
()
{
proxy
.
proxyRequest
(
server
,
port
,
req
,
res
);
},
latency
);
});
proxyServer
.
listen
(
8081
);
return
proxyServer
;
};
};
//
//
// Creates the 'hellonode' server
// Creates the 'hellonode' server
//
//
var
start
ProxyTarget
=
function
(
)
{
var
start
TargetServer
=
function
(
port
)
{
http
.
createServer
(
function
(
req
,
res
)
{
var
targetServer
=
http
.
createServer
(
function
(
req
,
res
)
{
helloWorld
(
req
,
res
);
helloWorld
(
req
,
res
);
}).
listen
(
8081
);
})
targetServer
.
listen
(
port
);
return
targetServer
;
};
};
//
//
// The default test bootstrapper
// The default test bootstrapper
with no latency
//
//
var
startProxyTest
=
function
()
{
var
startTest
=
function
(
proxy
,
port
)
{
var
proxy
=
new
(
NodeProxy
);
testServers
.
noLatency
=
[];
startProxy
(
'
127.0.0.1
'
,
8081
,
proxy
);
testServers
.
noLatency
.
push
(
startProxyServer
(
'
127.0.0.1
'
,
port
,
proxy
));
startProxyTarget
();
testServers
.
noLatency
.
push
(
startTargetServer
(
port
));
return
proxy
;
};
};
//
// The test bootstrapper with some latency
//
var
startTestWithLatency
=
function
(
proxy
,
port
)
{
testServers
.
latency
=
[];
testServers
.
latency
.
push
(
startLatentProxyServer
(
'
127.0.0.1
'
,
port
,
proxy
,
2000
));
testServers
.
latency
.
push
(
startTargetServer
(
port
));
};
vows
.
describe
(
'
node-proxy
'
).
addBatch
({
vows
.
describe
(
'
node-proxy
'
).
addBatch
({
"
When an incoming request is proxied to the helloNode server
"
:
{
"
When an incoming request is proxied to the helloNode server
"
:
{
"
with no latency
"
:
{
topic
:
function
()
{
topic
:
function
()
{
// Create the proxy and start listening
var
proxy
=
new
(
NodeProxy
);
var
proxy
=
startProxyTest
(
);
startTest
(
proxy
,
8082
);
proxy
.
emitter
.
addListener
(
'
end
'
,
this
.
callback
);
proxy
.
emitter
.
addListener
(
'
end
'
,
this
.
callback
);
var
client
=
http
.
createClient
(
8080
,
'
127.0.0.1
'
);
var
client
=
http
.
createClient
(
8080
,
'
127.0.0.1
'
);
...
@@ -69,6 +100,27 @@ vows.describe('node-proxy').addBatch({
...
@@ -69,6 +100,27 @@ vows.describe('node-proxy').addBatch({
},
},
"
it should received 'hello world'
"
:
function
(
err
,
body
)
{
"
it should received 'hello world'
"
:
function
(
err
,
body
)
{
assert
.
equal
(
body
,
'
hello world
'
);
assert
.
equal
(
body
,
'
hello world
'
);
testServers
.
noLatency
.
forEach
(
function
(
server
)
{
server
.
close
();
})
}
},
"
with latency
"
:
{
topic
:
function
()
{
var
proxy
=
new
(
NodeProxy
);
startTestWithLatency
(
proxy
,
8083
);
proxy
.
emitter
.
addListener
(
'
end
'
,
this
.
callback
);
var
client
=
http
.
createClient
(
8081
,
'
127.0.0.1
'
);
var
request
=
client
.
request
(
'
GET
'
,
'
/
'
);
request
.
end
();
},
"
it should receive 'hello world'
"
:
function
(
err
,
body
)
{
assert
.
equal
(
body
,
'
hello world
'
);
testServers
.
latency
.
forEach
(
function
(
server
)
{
server
.
close
();
})
}
}
}
}
}
}).
export
(
module
);
}).
export
(
module
);
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment