26 using System.Net.Sockets;
27 using System.Reflection;
29 using System.Threading.Tasks;
32 using Android.NUnitLite.UI;
36 using SiliconStudio.Core;
37 using SiliconStudio.Core.Diagnostics;
38 using SiliconStudio.Paradox.Graphics.Regression;
45 namespace NUnitLite.Tests
50 private const char IpAddressesSplitCharacter =
'%';
52 public static Logger Logger = GlobalLogger.GetLogger(
"NUnitLiteLauncher");
55 protected TcpClient
Connect(
string serverAddresses,
int serverPort)
58 var client =
new TcpClient();
59 var possibleIpAddresses = serverAddresses.Split(IpAddressesSplitCharacter);
60 foreach (var possibleIpAddress
in possibleIpAddresses)
62 if (String.IsNullOrEmpty(possibleIpAddress))
66 Logger.Debug(
@"Trying to connect to the server " + possibleIpAddress +
@":" + serverPort +
@".");
67 client.Connect(possibleIpAddress, serverPort);
69 Logger.Debug(
@"Client connected with ip " + possibleIpAddress +
@"... sending data");
74 Logger.Error(
"Error when trying to connect to the server IP {0}.\n{1}", possibleIpAddress, ex);
77 Logger.Debug(
@"Client connected with ip " + possibleIpAddress +
@"... sending data");
82 Logger.Fatal(
@"Could not connect to server. Quitting the application.");
86 throw new InvalidObjectException(
"Could not connect to server.");
89 protected override void OnCreate(Bundle bundle)
91 GlobalLogger.GlobalMessageLogged += logAction;
92 Logger.ActivateLog(LogMessageType.Debug);
94 base.OnCreate(bundle);
97 if (PlatformAndroid.Context == null)
98 PlatformAndroid.Context =
this;
100 var serverAddresses = Intent.GetStringExtra(TestRunner.ParadoxServerIp);
101 if (serverAddresses == null)
108 Task.Run(() => RunTests());
111 private void RunTests()
113 var serverAddresses = Intent.GetStringExtra(TestRunner.ParadoxServerIp);
114 var serverPort = Int32.Parse(Intent.GetStringExtra(TestRunner.ParadoxServerPort) ??
"8080");
115 var buildNumber = Int32.Parse(Intent.GetStringExtra(TestRunner.ParadoxBuildNumber) ??
"-1");
116 var branchName = Intent.GetStringExtra(TestRunner.ParadoxBranchName) ??
"";
119 Intent.RemoveExtra(TestRunner.ParadoxServerIp);
120 Intent.RemoveExtra(TestRunner.ParadoxServerPort);
121 Intent.RemoveExtra(TestRunner.ParadoxBuildNumber);
122 Intent.RemoveExtra(TestRunner.ParadoxBranchName);
125 Logger.Info(
@"*******************************************************************************************************************************");
126 Logger.Info(
@"date: " + DateTime.Now);
127 Logger.Info(
@"server addresses: " + serverAddresses);
128 Logger.Info(
@"port: " + serverPort);
129 Logger.Info(
@"*******************************************************************************************************************************");
132 var client = Connect(serverAddresses, serverPort);
135 ImageTester.ImageTestResultConnection.BuildNumber = buildNumber;
136 ImageTester.ImageTestResultConnection.BranchName = branchName ??
"";
141 ImageTester.Connect();
145 Logger.Error(
"Error connecting to image tester server: {0}", e);
149 var cachePath = CacheDir.AbsolutePath;
150 var timeNow = DateTime.Now;
153 var resultFile = Path.Combine(cachePath, string.Format(
"TestResult-{0:yyyy-MM-dd_hh-mm-ss-tt}.xml", timeNow));
155 Logger.Debug(
@"Execute tests");
157 var stringBuilder =
new StringBuilder();
159 new TextUI(stringWriter).Execute(
new [] {
"-format:nunit2", string.Format(
"-result:{0}", resultFile) });
161 Logger.Debug(
@"Execute tests done");
164 var result = File.ReadAllText(resultFile);
167 File.Delete(resultFile);
170 var output = stringBuilder.ToString();
171 Console.WriteLine(output);
173 Logger.Debug(
@"Sending results to server");
176 var binaryWriter =
new BinaryWriter(client.GetStream());
177 binaryWriter.Write(output);
178 binaryWriter.Write(result);
180 Logger.Debug(
@"Close connection");
182 ImageTester.Disconnect();
191 GlobalLogger.GlobalMessageLogged -= logAction;
203 if (PlatformAndroid.Context == null)
204 PlatformAndroid.Context =
this;
206 ImageTester.ImageTestResultConnection.BuildNumber = -1;
209 Add(Assembly.GetExecutingAssembly());
211 base.OnCreate(bundle);
216 ImageTester.Disconnect();
override void OnDestroy()
Base implementation for ILogger.
override void OnCreate(Bundle bundle)
override void OnCreate(Bundle bundle)
System.IO.StringWriter StringWriter
TcpClient Connect(string serverAddresses, int serverPort)
override void OnDestroy()
SiliconStudio.Paradox.Graphics.Regression.TextUI TextUI
A LogListener implementation redirecting its output to the default OS console. If console is not supp...