diff options
Diffstat (limited to 'Duplicati/UnitTest/RandomErrorBackend.cs')
-rw-r--r-- | Duplicati/UnitTest/RandomErrorBackend.cs | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/Duplicati/UnitTest/RandomErrorBackend.cs b/Duplicati/UnitTest/RandomErrorBackend.cs index 4151a8622..d714f7920 100644 --- a/Duplicati/UnitTest/RandomErrorBackend.cs +++ b/Duplicati/UnitTest/RandomErrorBackend.cs @@ -23,6 +23,13 @@ namespace Duplicati.UnitTest public RandomErrorBackend()
{
}
public RandomErrorBackend(string url, Dictionary<string, string> options)
{
var u = new Library.Utility.Uri(url).SetScheme(WrappedBackend).ToString();
m_backend = (IStreamingBackend)Library.DynamicLoader.BackendLoader.GetBackend(u, options);
}
private void ThrowErrorRandom()
{
if (random.NextDouble() > 0.90)
throw new Exception("Random upload failure");
}
- #region IStreamingBackend implementation
public void Put(string remotename, Stream stream)
{
var uploadError = random.NextDouble() > 0.9;
using(var f = new Library.Utility.ProgressReportingStream(stream, stream.Length, x => { if (uploadError && stream.Position > stream.Length / 2) throw new Exception("Random upload failure"); }))
m_backend.Put(remotename, f);
ThrowErrorRandom();
}
public void Get(string remotename, Stream stream)
{
ThrowErrorRandom();
m_backend.Get(remotename, stream);
ThrowErrorRandom();
}
#endregion
#region IBackend implementation
public IEnumerable<IFileEntry> List()
{
return m_backend.List();
}
public void Put(string remotename, string filename)
{
ThrowErrorRandom();
m_backend.Put(remotename, filename);
ThrowErrorRandom();
}
public void Get(string remotename, string filename)
{
ThrowErrorRandom();
m_backend.Get(remotename, filename);
ThrowErrorRandom();
}
public void Delete(string remotename)
{
ThrowErrorRandom();
m_backend.Delete(remotename);
ThrowErrorRandom();
}
public void Test()
{
m_backend.Test();
}
public void CreateFolder()
{
m_backend.CreateFolder();
}
public string DisplayName
{
get
{
return "Random Error Backend";
}
}
public string ProtocolKey
{
get
{
return "randomerror";
}
}
public IList<ICommandLineArgument> SupportedCommands
{
get
{
if (m_backend == null)
try { return Duplicati.Library.DynamicLoader.BackendLoader.GetSupportedCommands(WrappedBackend + "://"); }
catch { }
return m_backend.SupportedCommands;
}
}
public string Description
{
get
{
return "A testing backend that randomly fails";
}
}
#endregion
#region IDisposable implementation
public void Dispose()
{
if (m_backend != null)
try { m_backend.Dispose(); }
finally { m_backend = null; }
}
#endregion
}
+ #region IStreamingBackend implementation
public void Put(string remotename, Stream stream)
{
var uploadError = random.NextDouble() > 0.9;
using(var f = new Library.Utility.ProgressReportingStream(stream, stream.Length, x => { if (uploadError && stream.Position > stream.Length / 2) throw new Exception("Random upload failure"); }))
m_backend.Put(remotename, f);
ThrowErrorRandom();
}
public void Get(string remotename, Stream stream)
{
ThrowErrorRandom();
m_backend.Get(remotename, stream);
ThrowErrorRandom();
}
#endregion
#region IBackend implementation
public IEnumerable<IFileEntry> List()
{
return m_backend.List();
}
public void Put(string remotename, string filename)
{
ThrowErrorRandom();
m_backend.Put(remotename, filename);
ThrowErrorRandom();
}
public void Get(string remotename, string filename)
{
ThrowErrorRandom();
m_backend.Get(remotename, filename);
ThrowErrorRandom();
}
public void Delete(string remotename)
{
ThrowErrorRandom();
m_backend.Delete(remotename);
ThrowErrorRandom();
}
public void Test()
{
m_backend.Test();
}
public void CreateFolder()
{
m_backend.CreateFolder();
}
+ public string[] DNSName
+ {
+ get
+ {
+ return m_backend.DNSName;
+ }
+ }
public string DisplayName
{
get
{
return "Random Error Backend";
}
}
public string ProtocolKey
{
get
{
return "randomerror";
}
}
public IList<ICommandLineArgument> SupportedCommands
{
get
{
if (m_backend == null)
try { return Duplicati.Library.DynamicLoader.BackendLoader.GetSupportedCommands(WrappedBackend + "://"); }
catch { }
return m_backend.SupportedCommands;
}
}
public string Description
{
get
{
return "A testing backend that randomly fails";
}
}
#endregion
#region IDisposable implementation
public void Dispose()
{
if (m_backend != null)
try { m_backend.Dispose(); }
finally { m_backend = null; }
}
#endregion
}
}
|