ForwardedPortLocalTest.NET40.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. using System;
  2. using System.Diagnostics;
  3. using System.IO;
  4. using System.Net;
  5. using Microsoft.VisualStudio.TestTools.UnitTesting;
  6. using Renci.SshNet.Common;
  7. using Renci.SshNet.Tests.Properties;
  8. namespace Renci.SshNet.Tests.Classes
  9. {
  10. public partial class ForwardedPortLocalTest
  11. {
  12. [TestMethod]
  13. [TestCategory("integration")]
  14. [ExpectedException(typeof(SshConnectionException))]
  15. public void Test_PortForwarding_Local_Without_Connecting()
  16. {
  17. using (var client = new SshClient(Resources.HOST, Resources.USERNAME, Resources.PASSWORD))
  18. {
  19. var port1 = new ForwardedPortLocal("localhost", 8084, "www.renci.org", 80);
  20. client.AddForwardedPort(port1);
  21. port1.Exception += delegate(object sender, ExceptionEventArgs e)
  22. {
  23. Assert.Fail(e.Exception.ToString());
  24. };
  25. port1.Start();
  26. System.Threading.Tasks.Parallel.For(0, 100,
  27. //new ParallelOptions
  28. //{
  29. // MaxDegreeOfParallelism = 20,
  30. //},
  31. (counter) =>
  32. {
  33. var start = DateTime.Now;
  34. var req = HttpWebRequest.Create("http://localhost:8084");
  35. using (var response = req.GetResponse())
  36. {
  37. var data = ReadStream(response.GetResponseStream());
  38. var end = DateTime.Now;
  39. Debug.WriteLine(string.Format("Request# {2}: Lenght: {0} Time: {1}", data.Length, (end - start), counter));
  40. }
  41. }
  42. );
  43. }
  44. }
  45. [TestMethod]
  46. [TestCategory("integration")]
  47. public void Test_PortForwarding_Local()
  48. {
  49. using (var client = new SshClient(Resources.HOST, Resources.USERNAME, Resources.PASSWORD))
  50. {
  51. client.Connect();
  52. var port1 = new ForwardedPortLocal("localhost", 8084, "www.renci.org", 80);
  53. client.AddForwardedPort(port1);
  54. port1.Exception += delegate(object sender, ExceptionEventArgs e)
  55. {
  56. Assert.Fail(e.Exception.ToString());
  57. };
  58. port1.Start();
  59. System.Threading.Tasks.Parallel.For(0, 100,
  60. //new ParallelOptions
  61. //{
  62. // MaxDegreeOfParallelism = 20,
  63. //},
  64. (counter) =>
  65. {
  66. var start = DateTime.Now;
  67. var req = HttpWebRequest.Create("http://localhost:8084");
  68. using (var response = req.GetResponse())
  69. {
  70. var data = ReadStream(response.GetResponseStream());
  71. var end = DateTime.Now;
  72. Debug.WriteLine(string.Format("Request# {2}: Length: {0} Time: {1}", data.Length, (end - start), counter));
  73. }
  74. }
  75. );
  76. }
  77. }
  78. private static byte[] ReadStream(Stream stream)
  79. {
  80. byte[] buffer = new byte[1024];
  81. using (var ms = new MemoryStream())
  82. {
  83. while (true)
  84. {
  85. int read = stream.Read(buffer, 0, buffer.Length);
  86. if (read > 0)
  87. ms.Write(buffer, 0, read);
  88. else
  89. return ms.ToArray();
  90. }
  91. }
  92. }
  93. }
  94. }