New test.
[mono.git] / mcs / class / System.Data / Test / System.Data.Tests.Mainsoft / GHTUtils / HttpClientBase.cs
1 // Authors:
2 //   Rafael Mizrahi   <rafim@mainsoft.com>
3 //   Erez Lotan       <erezl@mainsoft.com>
4 //   Oren Gurfinkel   <oreng@mainsoft.com>
5 //   Ofer Borstein
6 // 
7 // Copyright (c) 2004 Mainsoft Co.
8 // 
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
16 // 
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
19 // 
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 //
28
29 using System;
30 using System.IO;
31 using System.Net;
32 using GHTUtils;
33 using GHTUtils.Base;
34
35
36 namespace CHttpClient
37 {
38         /// <summary>
39         /// Summary description for HttpClientBase.
40         /// </summary>
41         public class HttpClientBase : GHTBase
42         {
43                 protected string _testingUrl = "";
44                 protected string _proxyAddress = "";
45                 public HttpClientBase()
46                 {
47                         _testingUrl = "http://localhost/httpapp/";
48                         _proxyAddress = "localhost";
49                 }
50
51                 protected string TCUrl(string page)
52                 {
53                         return _testingUrl + page;
54                 }
55
56                 //===========================================================
57                 // HTTP request/response routines
58                 //===========================================================
59
60                 protected HttpStatusCode HttpRequestStatusCode(string url)
61                 {
62                         return HttpRequestStatusCode(CreateRequest(url));
63                 }
64                 protected HttpStatusCode HttpRequestStatusCode(HttpWebRequest _request)
65                 {
66                         System.Net.HttpWebResponse _response;
67                         _response = (HttpWebResponse)_request.GetResponse();
68                         
69                         HttpStatusCode c = _response.StatusCode;
70                         _response.Close();
71
72                         return c;
73                 }
74
75                 protected string HttpRequestString(string url)
76                 {
77                         return HttpRequestString(CreateRequest(url));
78                 }
79                 protected string HttpRequestString(HttpWebRequest _request)
80                 {
81                         System.Net.HttpWebResponse _response;
82                         _response = (HttpWebResponse)_request.GetResponse();
83
84                         Stream s = _response.GetResponseStream();
85                         TextReader r = new StreamReader(s);
86
87                         string str = r.ReadToEnd();
88                         _response.Close();
89
90                         return str;
91                 }
92
93                 protected HttpWebRequest CreateRequest(string url)
94                 {
95                         return (HttpWebRequest)System.Net.WebRequest.Create(url);
96                 }
97
98                 //===========================================================
99                 // Upload/Download Data utilities
100                 //===========================================================
101
102                 protected bool ValidateFile(string filename)
103                 {
104                         FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read);
105                         byte [] buffer = new byte[fs.Length];
106                         fs.Read(buffer, 0, buffer.Length);
107                         fs.Close();
108
109                         return ValidateData(buffer);
110                 }
111
112                 protected bool ValidateData(byte [] sdata)
113                 {
114                         for (int i=0; i < sdata.Length; i++)
115                         {
116                                 if (sdata[i] != (byte)(i % 256))
117                                         return false;
118                         }
119                         return true;
120                 }
121
122                 protected byte [] GenerateData(int size)
123                 {
124                         byte [] sdata = new byte[size];
125                         for (int i=0; i < sdata.Length; i++)
126                         {
127                                 sdata[i] = (byte)(i % 256);
128                         }
129
130                         return sdata;
131                 }
132                 
133                 //===========================================================
134                 // Test case execution routines
135                 //===========================================================
136
137                 protected delegate bool TestCaseDelegate();
138                 protected void ExecuteTestCase(string name, TestCaseDelegate f)
139                 {
140                         Exception exp = null;
141
142                         //sub test start
143                         try
144                         {
145                                 BeginCase(name);
146                                 Compare( f(), true );
147                         } 
148                         catch(Exception ex){exp = ex;}
149                         finally{EndCase(exp); exp = null;}
150                         //sub test end
151                 }
152
153         }
154 }