net-events.tap.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. 'use strict';
  2. var net = require('net')
  3. , tap = require('tap')
  4. , test = tap.test
  5. , createNamespace = require('../context').createNamespace
  6. ;
  7. test("continuation-local state with net connection", function (t) {
  8. t.plan(4);
  9. var namespace = createNamespace('net');
  10. namespace.run(function () {
  11. namespace.set('test', 0xabad1dea);
  12. var server;
  13. namespace.run(function () {
  14. namespace.set('test', 0x1337);
  15. server = net.createServer(function (socket) {
  16. t.equal(namespace.get('test'), 0x1337, "state has been mutated");
  17. socket.on("data", function () {
  18. t.equal(namespace.get('test'), 0x1337, "state is still preserved");
  19. server.close();
  20. socket.end("GoodBye");
  21. });
  22. });
  23. server.listen(function () {
  24. var address = server.address();
  25. namespace.run(function () {
  26. namespace.set("test", "MONKEY");
  27. var client = net.connect(address.port, function () {
  28. t.equal(namespace.get("test"), "MONKEY",
  29. "state preserved for client connection");
  30. client.write("Hello");
  31. client.on("data", function () {
  32. t.equal(namespace.get("test"), "MONKEY", "state preserved for client data");
  33. t.end();
  34. });
  35. });
  36. });
  37. });
  38. });
  39. });
  40. });