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