Added log4net for client profile
[pithos-ms-client] / trunk / Pithos.Core.Test / NetworkAgentTest.cs
1 using System;
2 using System.Collections.Generic;
3 using System.IO;
4 using System.Linq;
5 using System.Text;
6 using NUnit.Framework;
7 using Pithos.Core.Agents;
8 using Pithos.Network;
9
10 namespace Pithos.Core.Test
11 {
12     [TestFixture]
13     class NetworkAgentTest
14     {
15         [Test]
16         public void TestUpload()
17         {
18             var agent = new NetworkAgent
19             {
20                 PithosContainer = "pithos",
21                 BlockSize = 4194304,
22                 BlockHash="sha256",
23                 CloudClient = new CloudFilesClient
24                                 {
25                                     AuthenticationUrl = @"https://pithos.dev.grnet.gr",
26                                     UsePithos = true
27                                 }
28             };
29
30             var account = "890329@vho.grnet.gr";
31             agent.CloudClient.Authenticate(account, "24989dce4e0fcb072f8cb60c8922be19");
32
33             var fileName = "012345.dump";
34             var filePath = Path.Combine(@"e:\pithos\", fileName);
35
36             var random = new Random();
37             var buffer = new byte[4096];
38             random.NextBytes(buffer);
39
40             if (File.Exists(filePath))
41                 File.Delete(filePath);
42
43             using (var stream = File.OpenWrite(filePath))
44             {
45                 for (var i = 0; i < 2* 1024;i++ )
46                     stream.Write(buffer, 0, buffer.Length);
47             }
48
49
50             agent.CloudClient.DeleteObject(null, agent.PithosContainer, fileName,agent.TrashContainer);
51
52             var task = Signature.CalculateTreeHashAsync(filePath, agent.BlockSize, agent.BlockHash);
53             agent.UploadWithHashMap(account,"pithos",new FileInfo(filePath),fileName,task);
54
55             var newHash = agent.CloudClient.GetHashMap(null, agent.PithosContainer, fileName).Result;
56
57
58             var treeHash = task.Result;
59             Assert.AreEqual(treeHash.TopHash, newHash.TopHash);
60
61             Assert.AreEqual(treeHash.Hashes, newHash.Hashes);
62
63         }
64
65         [Test]
66         public void TestDownload()
67         {
68             var fileAgent = new FileAgent {FragmentsPath = @"e:\pithos\Fragments"};
69
70             var agent = new NetworkAgent
71             {
72                 PithosContainer = "pithos",
73                 BlockSize = 4194304,
74                 BlockHash="sha256",
75                 CloudClient = new CloudFilesClient
76                                 {
77                                     AuthenticationUrl = @"https://pithos.dev.grnet.gr",
78                                     UsePithos = true
79                                 },
80                 FileAgent=fileAgent
81             };
82
83             var account = "890329@vho.grnet.gr";
84             agent.CloudClient.Authenticate(account, "24989dce4e0fcb072f8cb60c8922be19");
85
86             var fileName = @"AccessDatabaseEngine_x64.exe";
87
88             var filePath = Path.Combine(@"e:\pithos\", fileName);
89             if (File.Exists(filePath))
90                 File.Delete(filePath);            
91             
92             var newHash = agent.CloudClient.GetHashMap(null, agent.PithosContainer, fileName).Result;
93             agent.DownloadWithBlocks(account,agent.PithosContainer,new Uri(fileName,UriKind.Relative),filePath,newHash)
94                 .Wait();
95
96             Assert.IsTrue(File.Exists(filePath));
97             var treeHash = Signature.CalculateTreeHashAsync(filePath, agent.BlockSize, agent.BlockHash).Result;
98
99             Assert.AreEqual(treeHash.TopHash, newHash.TopHash);
100
101             Assert.AreEqual(treeHash.Hashes, newHash.Hashes);
102
103         }
104
105     }
106 }