/// <summary>Test file descriptor passing.</summary> /// <exception cref="System.IO.IOException"/> /// <exception cref="System.Exception"/> public virtual void TestFdPassing() { string TestPath = new FilePath(sockDir.GetDir(), "test_sock").GetAbsolutePath(); byte[] clientMsg1 = new byte[] { unchecked ((int)(0x11)), unchecked ((int)(0x22)), unchecked ((int)(0x33)), unchecked ((int)(0x44)), unchecked ((int)(0x55)), unchecked ( (int)(0x66)) }; byte[] serverMsg1 = new byte[] { unchecked ((int)(0x31)), unchecked ((int)(0x30)), unchecked ((int)(0x32)), unchecked ((int)(0x34)), unchecked ((int)(0x31)), unchecked ( (int)(0x33)), unchecked ((int)(0x44)), unchecked ((int)(0x1)), unchecked ((int)(0x1 )), unchecked ((int)(0x1)), unchecked ((int)(0x1)), unchecked ((int)(0x1)) }; ArrayBlockingQueue <System.Exception> threadResults = new ArrayBlockingQueue <System.Exception >(2); DomainSocket serv = DomainSocket.BindAndListen(TestPath); TestDomainSocket.PassedFile[] passedFiles = new TestDomainSocket.PassedFile[] { new TestDomainSocket.PassedFile(1), new TestDomainSocket.PassedFile(2) }; FileDescriptor[] passedFds = new FileDescriptor[passedFiles.Length]; for (int i = 0; i < passedFiles.Length; i++) { passedFds[i] = passedFiles[i].GetInputStream().GetFD(); } Thread serverThread = new _Thread_597(serv, clientMsg1, passedFds, serverMsg1 , threadResults); // Run server serverThread.Start(); Thread clientThread = new _Thread_620(TestPath, clientMsg1, serverMsg1, passedFds , passedFiles, threadResults); clientThread.Start(); for (int i_1 = 0; i_1 < 2; i_1++) { System.Exception t = threadResults.Take(); if (!(t is TestDomainSocket.Success)) { NUnit.Framework.Assert.Fail(t.Message + ExceptionUtils.GetStackTrace(t)); } } serverThread.Join(120000); clientThread.Join(120000); serv.Close(); foreach (TestDomainSocket.PassedFile pf in passedFiles) { pf.Cleanup(); } }
/// <summary>Test a simple client/server interaction.</summary> /// <exception cref="System.IO.IOException"/> /// <exception cref="System.Exception"/> internal virtual void TestClientServer1(Type writeStrategyClass, Type readStrategyClass , DomainSocket[] preConnectedSockets) { string TestPath = new FilePath(sockDir.GetDir(), "test_sock_client_server1").GetAbsolutePath (); byte[] clientMsg1 = new byte[] { unchecked ((int)(0x1)), unchecked ((int)(0x2)), unchecked ( (int)(0x3)), unchecked ((int)(0x4)), unchecked ((int)(0x5)), unchecked ((int)(0x6)) }; byte[] serverMsg1 = new byte[] { unchecked ((int)(0x9)), unchecked ((int)(0x8)), unchecked ( (int)(0x7)), unchecked ((int)(0x6)), unchecked ((int)(0x5)) }; byte clientMsg2 = unchecked ((int)(0x45)); ArrayBlockingQueue <Exception> threadResults = new ArrayBlockingQueue <Exception>(2 ); DomainSocket serv = (preConnectedSockets != null) ? null : DomainSocket.BindAndListen (TestPath); Thread serverThread = new _Thread_435(preConnectedSockets, serv, clientMsg1 , readStrategyClass, writeStrategyClass, serverMsg1, clientMsg2, threadResults); // Run server serverThread.Start(); Thread clientThread = new _Thread_463(preConnectedSockets, TestPath, writeStrategyClass , clientMsg1, readStrategyClass, serverMsg1, clientMsg2, threadResults); clientThread.Start(); for (int i = 0; i < 2; i++) { Exception t = threadResults.Take(); if (!(t is TestDomainSocket.Success)) { NUnit.Framework.Assert.Fail(t.Message + ExceptionUtils.GetStackTrace(t)); } } serverThread.Join(120000); clientThread.Join(120000); if (serv != null) { serv.Close(); } }