1 // ****************************************************************************************************
2 // Namespace: NUnit.Framework.TUnit
4 // Description: Tizen UnitTest Settings
5 // Author: Nguyen Truong Duong <duong.nt1@samsung.com>
8 // Name: Date: Description:
9 // ****************************************************************************************************
12 #define NUNIT_FRAMEWORK
17 using System.Collections.Generic;
18 using System.Threading.Tasks;
23 namespace NUnit.Framework.TUnit
25 public class TSettings
27 private static int DefaultTCDelay = 50; // Default time delay for each test case execution (millisecond) to reduce CPU consumption
28 private static string OutputFilePathName = ""; // XML Result File Path Name
29 public static long CurTCIndex = 0; // HACKING: Curent TC Index
31 private static TSettings _instance;
32 private static object lockObject = new object();
34 public static TSettings GetInstance()
38 if (_instance == null)
40 _instance = new TSettings();
51 public void SetDefaultTCDelay(int defaultTCDelay)
53 DefaultTCDelay = defaultTCDelay;
56 public int GetDefaultTCDelay()
58 return DefaultTCDelay;
61 public void SetOutputFilePathName(string outputFilePathName)
63 OutputFilePathName = outputFilePathName;
66 public string GetOutputFilePathName()
68 return OutputFilePathName;
71 #region testkit-stub api
72 // [Hyukin.Kwon-code]: session_id for communication with testkit-stub
73 private static bool _isSlaveMode = false;
74 private static int _session_id;
75 private static string _server = "http://127.0.0.1:8000";
76 // private static string _proxy = "http://10.112.1.184:8080/";
78 public static bool IsLastTC = false;
79 private static string _testcase_id;
81 public void ConnectTestkitStub()
83 TLogger.Write("############### ConnectTestkitStub ###############");
84 Random rnd = new Random();
85 _session_id = rnd.Next(1000, 9999);
86 _server = "http://127.0.0.1:8000";
87 _isSlaveMode = SyncSessionIdRequest();
88 Console.WriteLine("[TUnitTest] - " + "IsSlaveMode : " + _isSlaveMode);
91 private bool SyncSessionIdRequest()
93 TLogger.Write("############### In SyncSessionIdRequest ###############");
94 Console.WriteLine("[TUnitTest] - " + "In SyncSessionIdRequest");
96 string result = RequestGET("init_session_id", _session_id);
103 //string[] jobj = ResultParser (result);
104 //if (jobj [1] == "OK" && jobj [2] == "1")
107 Dictionary<string, string> dic = parseJson(result);
109 if (dic["OK"].Equals("1"))
115 private bool CheckServer()
117 TLogger.Write("############### In CheckServer ###############");
118 Console.WriteLine("[TUnitTest] - " + "In CheckServer");
119 string result = RequestGET("check_server");
124 string[] jobj = ResultParser(result);
131 private string RequestGET(string key)
133 TLogger.Write("############### In RequestGET ###############");
134 Console.WriteLine("[TUnitTest] - " + "In RequestGET");
136 string result = null;
137 string url = _server + "/" + key;
139 Console.WriteLine("[TUnitTest] - " + "RequestGET url : " + url);
140 TLogger.Write("############### RequestGET url ###############");
144 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
147 // https://msdn.microsoft.com/en-us/library/czdt10d3(v=vs.110).aspx
149 WebProxy proxyObject = new WebProxy(_server, true);
150 request.Proxy = proxyObject;
153 IWebProxy proxy = request.Proxy;
157 Console.WriteLine("[TUnitTest] - Proxy is NOT null. Is ByPassed : " + proxy.IsBypassed(new Uri(url)));
161 Console.WriteLine("[TUnitTest] - " + "Proxy is null; no proxy will be used");
164 Task<WebResponse> res = request.GetResponseAsync();
166 WebResponse response = res.Result;
167 Stream stream = response.GetResponseStream();
168 StreamReader reader = new StreamReader(stream);
169 result = reader.ReadToEnd();
170 Console.WriteLine("[TUnitTest] - " + "RequestGET Result : " + result);
171 TLogger.Write("############### RequestGET Result : " + result + " ###############");
177 Console.WriteLine("[TUnitTest] - " + "RequestGET error : " + e.ToString());
183 private string RequestGET(string key, int sessionId)
185 TLogger.Write("############### In RequestGET ###############");
186 Console.WriteLine("[TUnitTest] - " + "In RequestGET");
188 string result = null;
189 string url = _server + "/" + key + "?session_id=" + _session_id;
191 Console.WriteLine("[TUnitTest] - " + "RequestGET url : " + url);
192 TLogger.Write("############### RequestGET url : " + url + " ###############");
196 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
199 // https://msdn.microsoft.com/en-us/library/czdt10d3(v=vs.110).aspx
201 WebProxy proxyObject = new WebProxy(_server, true);
202 request.Proxy = proxyObject;
205 IWebProxy proxy = request.Proxy;
209 Console.WriteLine("[TUnitTest] - Proxy is NOT null. Is ByPassed : " + proxy.IsBypassed(new Uri(url)));
213 Console.WriteLine("[TUnitTest] - " + "Proxy is null; no proxy will be used");
216 Task<WebResponse> res = request.GetResponseAsync();
218 WebResponse response = res.Result;
219 Stream stream = response.GetResponseStream();
220 StreamReader reader = new StreamReader(stream);
221 result = reader.ReadToEnd();
222 Console.WriteLine("[TUnitTest] - " + "RequestGET Result: " + result);
228 Console.WriteLine("[TUnitTest] - " + "RequestGET error : " + e.Message);
233 private string[] ResultParser(string TCID)
235 string[] delimiter = { "{\"", "\":\"", "\":", ",\"", "\"}", "}" };
236 string[] stringPieces = null;
240 stringPieces = TCID.Split(delimiter, StringSplitOptions.None);
244 Console.WriteLine("[TUnitTest] - " + "ResultParser : " + e.Message);
250 public Dictionary<string, string> parseJson(string jsonString)
252 Dictionary<string, string> jsonDic = new Dictionary<string, string>();
253 jsonString = jsonString.Replace("\n", "");
254 jsonString = jsonString.Replace("{", "");
255 jsonString = jsonString.Replace("}", "");
257 string[] ary = jsonString.Split(',');
259 foreach (string item in ary)
261 if (!item.Equals(""))
263 string[] keyValue = item.Split(':');
264 keyValue[0] = keyValue[0].Replace(" ", "");
265 keyValue[0] = keyValue[0].Replace("\"", "");
268 while (keyValue[1].StartsWith(" "))
269 keyValue[1] = keyValue[1].Substring(1);
271 while (keyValue[1].EndsWith(" "))
272 keyValue[1] = keyValue[1].Substring(0, keyValue[1].Length - 2);
274 keyValue[1] = keyValue[1].Replace("\"", "");
276 Console.Write(" key : " + keyValue[0] + ", value : " + keyValue[1] + "\n");
277 jsonDic.Add(keyValue[0], keyValue[1].Replace("\"", ""));
284 public bool CheckExecutionProgressRequest()
286 Console.WriteLine("[TUnitTest] - " + "In CheckExecutionProgressRequest");
288 string result = RequestGET("check_execution_progress", _session_id);
293 string[] jobj = ResultParser(result);
300 public bool AskNextStepRequest()
302 Console.WriteLine("[TUnitTest] - " + "In AskNextStepRequest");
304 string result = RequestGET("ask_next_step", _session_id);
305 TLogger.Write("############### In AskNextStepRequest ###############");
310 Dictionary<string, string> dic = parseJson(result);
315 if (dic["step"].Equals("continue"))
321 public List<string> ManualTestTaskRequest()
323 List<string> list = new List<string>();
324 string result = RequestGET("manual_cases", _session_id);
328 result = result.Replace("[", "");
329 result = result.Replace("]", "");
330 result = result.Replace("\n", "");
331 result = result.Replace("{", "");
332 result = result.Replace("}", "");
333 result = result.Replace(" ", "");
335 string[] arr = result.Split(',');
337 foreach (string item in arr)
339 if (!item.Equals("") && item.Contains("case_id"))
341 string tmp = item.Replace("\"", "");
342 string[] keyValue = tmp.Split(':');
343 list.Add(keyValue[1]);
350 public string AutoTestTaskRequest()
352 Console.WriteLine("[TUnitTest] - " + "In AutoTestTaskRequest");
354 string result = RequestGET("auto_test_task", _session_id);
355 TLogger.Write("############### In AutoTestTaskRequest ###############");
363 Dictionary<string, string> dic = parseJson(result);
368 if (dic.ContainsKey("none"))
373 Console.WriteLine("[TUnitTest] - " + "TC name received:[" + dic["case_id"] + "]");
377 Console.WriteLine("[TUnitTest] - " + "Json parsing Error : " + e.Message);
381 return dic["case_id"];
384 public string RequestPOST(string key, string json)
386 Console.WriteLine("[TUnitTest] - " + "In RequestPOST");
387 string result = null;
388 TLogger.Write("############### In RequestPOST ###############");
389 string url = _server + "/" + key;
390 json = json + "&session_id=" + _session_id;
392 Console.WriteLine("[TUnitTest] - " + "RequestPOST url :" + url);
396 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); // WebRequest 객체 형성 및 HttpWebRequest 로 형변환
400 // https://msdn.microsoft.com/en-us/library/czdt10d3(v=vs.110).aspx
402 WebProxy proxyObject = new WebProxy(_server, true);
403 request.Proxy = proxyObject;
406 IWebProxy proxy = request.Proxy;
410 Console.WriteLine("[TUnitTest] - Proxy is NOT null. Is ByPassed : " + proxy.IsBypassed(new Uri(url)));
414 Console.WriteLine("[TUnitTest] - " + "Proxy is null; no proxy will be used");
417 request.Method = "POST"; // 전송 방법 "GET" or "POST"
418 request.ContentType = "application/json";
420 byte[] byteArray = Encoding.UTF8.GetBytes(json);
422 Task<Stream> dataAsync = request.GetRequestStreamAsync();
424 Stream dataStream = dataAsync.Result;
425 dataStream.Write(byteArray, 0, byteArray.Length);
426 dataStream.Dispose();
428 Task<WebResponse> resAsync = request.GetResponseAsync();
431 WebResponse response = resAsync.Result;
433 Stream respPostStream = response.GetResponseStream();
434 StreamReader reader = new StreamReader(respPostStream);
435 result = reader.ReadToEnd();
437 Console.WriteLine("[TUnitTest] - " + "###############Asavin############### RequestPOST Result :" + result);
444 Console.WriteLine("[TUnitTest] - " + "RequestPOST ERROR :" + e.Message);
449 public void SubmitManualResult()
451 TLogger.Write("############### SubmitManualResult ###############");
452 LogUtils.Write(LogUtils.DEBUG, LogUtils.TAG, "Manual test execution done.");
454 if (_isSlaveMode == true)
456 LogUtils.Write(LogUtils.DEBUG, LogUtils.TAG, "Submit result to inform manual execution done.");
457 RequestGET("generate_xml");
462 public List<string> GetNotPassListManual()
464 List<string> list = new List<string>();
465 LogUtils.Write(LogUtils.INFO, LogUtils.TAG, "############### GetNotPassListManual ###############");
466 if (AskNextStepRequest())
468 CheckExecutionProgressRequest();
469 list = ManualTestTaskRequest();
474 public void NextStepRequest()
476 TLogger.Write("############### NextStepRequest ###############");
477 if (AskNextStepRequest())
479 CheckExecutionProgressRequest();
481 if (AskNextStepRequest())
483 Testcase_ID = AutoTestTaskRequest();
487 public SingleTestDoneEventArgs GetSingleTestDoneEventArgs()
489 SingleTestDoneEventArgs singleTestArgs = new SingleTestDoneEventArgs();
490 singleTestArgs.Name = Testcase_ID;
491 singleTestArgs.Result = TCResult;
492 singleTestArgs.Message = TCMessage;
493 return singleTestArgs;
496 public bool IsSlaveMode
498 get { return _isSlaveMode; }
507 public string Testcase_ID
509 get { return _testcase_id; }
510 set { _testcase_id = value; }
514 public string TCResult
520 public string TCMessage
532 public class SingleTestDoneEventArgs : EventArgs
534 public string Name { get; set; }
535 public string Result { get; set; }
536 public string Message { get; set; }