summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManish Sinha <mail@manishsinha.net>2010-10-03 13:28:20 +0530
committerManish Sinha <mail@manishsinha.net>2010-10-03 13:28:20 +0530
commit2c7f594dd15abba4ec3bf8b09b750f047f320369 (patch)
tree375731121bbd8f99b6162197560562e57c8de434
parente63b1605cbc5d2c4176bb422d433facc31eac119 (diff)
Implemented TestDeleteEvent and also made changes to TimeRange to make it more managed like.
Updated ILog and LogClient accordingly
-rw-r--r--Zeitgeist.Testsuite/Log/TestDeleteEvents.cs50
-rw-r--r--Zeitgeist.Testsuite/Log/TestInsertEvents.cs16
-rw-r--r--Zeitgeist.Testsuite/Zeitgeist.Testsuite.csproj1
-rw-r--r--Zeitgeist/Client/ILog.cs12
-rw-r--r--Zeitgeist/Datamodel/TimeRange.cs55
-rw-r--r--Zeitgeist/LogClient.cs35
6 files changed, 131 insertions, 38 deletions
diff --git a/Zeitgeist.Testsuite/Log/TestDeleteEvents.cs b/Zeitgeist.Testsuite/Log/TestDeleteEvents.cs
new file mode 100644
index 0000000..9f23da0
--- /dev/null
+++ b/Zeitgeist.Testsuite/Log/TestDeleteEvents.cs
@@ -0,0 +1,50 @@
+using System;
+using NUnit.Framework;
+using Zeitgeist;
+using Zeitgeist.Datamodel;
+using System.Collections.Generic;
+
+namespace Zeitgeist.Testsuite
+{
+ [TestFixture()]
+ public class TestDeleteEvents
+ {
+ [Test()]
+ public void TestDeleteEventsPass()
+ {
+ Event ev1 = new Event();
+ Subject sub11 = new Subject();
+ Subject sub12 = new Subject();
+ ev1.Subjects.Add(sub11);
+ ev1.Subjects.Add(sub12);
+
+ Event ev2 = new Event();
+ Subject sub21 = new Subject();
+ Subject sub22 = new Subject();
+ ev2.Subjects.Add(sub21);
+ ev2.Subjects.Add(sub22);
+
+ LogClient client = new LogClient();
+ List<uint> eventIds = client.InsertEvents(new List<Event>() { ev1, ev2 });
+
+ CollectionAssert.IsNotEmpty(eventIds);
+ Assert.AreEqual(eventIds.Count, 2);
+
+ TimeRange range = client.DeleteEvents(eventIds);
+
+ Assert.IsNotNull(range.Begin);
+ Assert.IsNotNull(range.End);
+ }
+
+ [Test()]
+ public void TestDeleteEventsFail()
+ {
+ LogClient client = new LogClient();
+
+ TimeRange range = client.DeleteEvents(new List<uint>(){ 3000 });
+
+ Assert.IsNull(range);
+ }
+ }
+}
+
diff --git a/Zeitgeist.Testsuite/Log/TestInsertEvents.cs b/Zeitgeist.Testsuite/Log/TestInsertEvents.cs
index 77343cd..2ad7ae1 100644
--- a/Zeitgeist.Testsuite/Log/TestInsertEvents.cs
+++ b/Zeitgeist.Testsuite/Log/TestInsertEvents.cs
@@ -33,22 +33,6 @@ namespace Zeitgeist.Testsuite
Assert.IsNotNull(eventIds);
CollectionAssert.IsNotEmpty(eventIds);
}
-
- [Test()]
- public void TestInsertEventsFail()
- {
- Event ev = new Event();
-
- Subject sub11 = new Subject();
-
- ev.Subjects.Add(sub11);
-
- LogClient client = new LogClient();
- List<uint> eventIds = client.InsertEvents(new List<Event>() { ev });
-
- Assert.IsNotNull(eventIds);
- CollectionAssert.IsNotEmpty(eventIds);
- }
}
}
diff --git a/Zeitgeist.Testsuite/Zeitgeist.Testsuite.csproj b/Zeitgeist.Testsuite/Zeitgeist.Testsuite.csproj
index 66baf42..cfd5a0a 100644
--- a/Zeitgeist.Testsuite/Zeitgeist.Testsuite.csproj
+++ b/Zeitgeist.Testsuite/Zeitgeist.Testsuite.csproj
@@ -43,6 +43,7 @@
<Compile Include="Datamodel\TestManifestation.cs" />
<Compile Include="Log\TestGetEvents.cs" />
<Compile Include="Log\TestInsertEvents.cs" />
+ <Compile Include="Log\TestDeleteEvents.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Zeitgeist\Zeitgeist.csproj">
diff --git a/Zeitgeist/Client/ILog.cs b/Zeitgeist/Client/ILog.cs
index f68d7ab..895b142 100644
--- a/Zeitgeist/Client/ILog.cs
+++ b/Zeitgeist/Client/ILog.cs
@@ -59,7 +59,7 @@ namespace Zeitgeist.Client
/// An array containing the IDs of all matching events, up to a maximum of num_events events.
/// Sorted and grouped as defined by the result_type parameter. <see cref="T:System.UInt32[]"/>
/// </returns>
- UInt32[] FindEventIds(TimeRange range, RawEvent[] eventTemplates, UInt32 state, UInt32 maxEvents, UInt32 resType);
+ UInt32[] FindEventIds(RawTimeRange range, RawEvent[] eventTemplates, UInt32 state, UInt32 maxEvents, UInt32 resType);
/// <summary>
/// Get events matching a given set of templates.
@@ -87,7 +87,7 @@ namespace Zeitgeist.Client
/// <returns>
/// Full event data for all the requested IDs, up to a maximum of num_events events, sorted and grouped as defined by the result_type parameter. <see cref="T:Zeitgeist.Datamodel.RawEvent[]"/>
/// </returns>
- RawEvent[] FindEvents(TimeRange range, RawEvent[] eventTemplates, UInt32 state, UInt32 maxEvents, UInt32 resType);
+ RawEvent[] FindEvents(RawTimeRange range, RawEvent[] eventTemplates, UInt32 state, UInt32 maxEvents, UInt32 resType);
/// <summary>
/// Warning: This API is EXPERIMENTAL and is not fully supported yet.
@@ -115,7 +115,7 @@ namespace Zeitgeist.Client
/// <returns>
/// A list of URIs matching the described criteria <see cref="T:System.String[]"/>
/// </returns>
- string[] FindRelatedUris(TimeRange range, RawEvent[] eventTemplates, RawEvent[] resultEventTemplates, UInt32 state, UInt32 maxEvents, UInt32 resType);
+ string[] FindRelatedUris(RawTimeRange range, RawEvent[] eventTemplates, RawEvent[] resultEventTemplates, UInt32 state, UInt32 maxEvents, UInt32 resType);
/// <summary>
/// Inserts events into the log. Returns an array containing the IDs of the inserted events
@@ -144,7 +144,7 @@ namespace Zeitgeist.Client
/// <param name="eventTemplates">
/// RawEvent templates that events must match in order to trigger the monitor <see cref="T:Zeitgeist.Datamodel.RawEvent[]"/>
/// </param>
- void InstallMonitor(ObjectPath monitorPath, TimeRange range, RawEvent[] eventTemplates);
+ void InstallMonitor(ObjectPath monitorPath, RawTimeRange range, RawEvent[] eventTemplates);
/// <summary>
/// Remove a monitor installed with InstallMonitor()
@@ -161,9 +161,9 @@ namespace Zeitgeist.Client
/// The eventId of the Events to be deleted <see cref="T:System.UInt32[]"/>
/// </param>
/// <returns>
- /// The TimeRange <see cref="T:Zeitgeist.Datamodel.TimeRange"/>
+ /// The TimeRange <see cref="T:Zeitgeist.Datamodel.RawTimeRange"/>
/// </returns>
- TimeRange DeleteEvents(UInt32[] eventIds);
+ RawTimeRange DeleteEvents(UInt32[] eventIds);
/// <summary>
/// Delete the log file and all its content
diff --git a/Zeitgeist/Datamodel/TimeRange.cs b/Zeitgeist/Datamodel/TimeRange.cs
index 33d1169..e51cc60 100644
--- a/Zeitgeist/Datamodel/TimeRange.cs
+++ b/Zeitgeist/Datamodel/TimeRange.cs
@@ -5,40 +5,40 @@ namespace Zeitgeist.Datamodel
/// <summary>
/// The type which deals with Start and End time for an event.
/// </summary>
- public struct TimeRange
+ public class TimeRange
{
- public TimeRange(DateTime startTime, DateTime endTime)
+ public TimeRange(Int64 startTime, Int64 endTime)
{
- _begin = startTime;
- _end = endTime;
+ _begin = ZsUtils.ToDateTime((ulong)startTime);
+ _end = ZsUtils.ToDateTime((ulong)endTime);
}
/// <summary>
/// The begin Timestamp of the event. Seconds elapsed since Epoch
/// </summary>
- public Int64 Begin
+ public DateTime Begin
{
get
{
- return (Int64)ZsUtils.ToTimestamp(_begin);
+ return _begin;
}
set
{
- _begin = ZsUtils.ToDateTime((ulong)value);
+ _begin = value;
}
}
/// <summary>
/// The end Timestamp of the event. Seconds elapsed since Epoch
/// </summary>
- public Int64 End
+ public DateTime End
{
get
{
- return (Int64)ZsUtils.ToTimestamp(_end);
+ return _end;
}
set
{
- _end = ZsUtils.ToDateTime((ulong)value);
+ _end = value;
}
}
@@ -50,5 +50,40 @@ namespace Zeitgeist.Datamodel
#endregion
}
+
+ internal struct RawTimeRange
+ {
+ public Int64 Begin
+ {
+ get
+ {
+ return _begin;
+ }
+ set
+ {
+ _begin = value;
+ }
+ }
+
+ public Int64 End
+ {
+ get
+ {
+ return _end;
+ }
+ set
+ {
+ _end = value;
+ }
+ }
+
+ #region Private Fields
+
+ private Int64 _begin;
+
+ private Int64 _end;
+
+ #endregion
+ }
}
diff --git a/Zeitgeist/LogClient.cs b/Zeitgeist/LogClient.cs
index e373870..c751878 100644
--- a/Zeitgeist/LogClient.cs
+++ b/Zeitgeist/LogClient.cs
@@ -73,6 +73,7 @@ namespace Zeitgeist
/// <summary>
/// Delete a set of events from the log given their IDs
+ /// If all the Event ID provided does not exist, then null is returned
/// </summary>
/// <param name="eventIds">
/// The eventId (of type <see cref="T:System.Collection.Generic.List{System.UInt32}"/> ) of the Events to be deleted
@@ -82,7 +83,12 @@ namespace Zeitgeist
/// </returns>
public TimeRange DeleteEvents(List<uint> eventIds)
{
- return srcInterface.DeleteEvents(eventIds.ToArray());
+ RawTimeRange rawRange = srcInterface.DeleteEvents(eventIds.ToArray());
+
+ if(rawRange.Begin < 0 && rawRange.End < 0)
+ return null;
+ else
+ return new TimeRange(rawRange.Begin, rawRange.End);
}
#endregion
@@ -127,7 +133,11 @@ namespace Zeitgeist
{
RawEvent[] rawEventTemplates = ZsUtils.ToRawEventList(eventTemplates).ToArray();
- UInt32[] eventIds = srcInterface.FindEventIds(range, rawEventTemplates, (uint)state, maxEvents, (uint) resType);
+ RawTimeRange rawRange = new RawTimeRange();
+ rawRange.Begin = (long)ZsUtils.ToTimestamp(range.Begin);
+ rawRange.End = (long)ZsUtils.ToTimestamp(range.End);
+
+ UInt32[] eventIds = srcInterface.FindEventIds(rawRange, rawEventTemplates, (uint)state, maxEvents, (uint) resType);
return new List<uint>(eventIds);
}
@@ -164,7 +174,11 @@ namespace Zeitgeist
{
RawEvent[] rawEventTemplates = ZsUtils.ToRawEventList(eventTemplates).ToArray();
- RawEvent[] events = srcInterface.FindEvents(range, rawEventTemplates, (uint)state, maxEvents, (uint) resType);
+ RawTimeRange rawRange = new RawTimeRange();
+ rawRange.Begin = (long)ZsUtils.ToTimestamp(range.Begin);
+ rawRange.End = (long)ZsUtils.ToTimestamp(range.End);
+
+ RawEvent[] events = srcInterface.FindEvents(rawRange, rawEventTemplates, (uint)state, maxEvents, (uint) resType);
return ZsUtils.FromRawEventList(events);
}
@@ -202,7 +216,11 @@ namespace Zeitgeist
RawEvent[] rawEvents = ZsUtils.ToRawEventList(eventTemplates).ToArray();
RawEvent[] rawEventTemplates = ZsUtils.ToRawEventList(resultEventTemplates).ToArray();
- string[] uris = srcInterface.FindRelatedUris(range, rawEvents, rawEventTemplates, (uint)state, maxEvents, (uint) resType);
+ RawTimeRange rawRange = new RawTimeRange();
+ rawRange.Begin = (long)ZsUtils.ToTimestamp(range.Begin);
+ rawRange.End = (long)ZsUtils.ToTimestamp(range.End);
+
+ string[] uris = srcInterface.FindRelatedUris(rawRange, rawEvents, rawEventTemplates, (uint)state, maxEvents, (uint) resType);
return new List<string>(uris);
}
@@ -224,11 +242,16 @@ namespace Zeitgeist
/// Event templates <see cref="T:System.Collection.Generic.List{Zeitgeist.Datamodel.Event}"/> that events must match in order to trigger the monitor
/// </param>
public void InstallMonitor(string monitorPath, TimeRange range, List<Event> eventTemplates)
- { srcInterface = ZsUtils.GetDBusObject<ILog>(objectPath);
+ {
+ srcInterface = ZsUtils.GetDBusObject<ILog>(objectPath);
+
+ RawTimeRange rawRange = new RawTimeRange();
+ rawRange.Begin = (long)ZsUtils.ToTimestamp(range.Begin);
+ rawRange.End = (long)ZsUtils.ToTimestamp(range.End);
ObjectPath path = new ObjectPath(monitorPath);
List<RawEvent> rawEvents = ZsUtils.ToRawEventList(eventTemplates);
- srcInterface.InstallMonitor(path, range, rawEvents.ToArray());
+ srcInterface.InstallMonitor(path, rawRange, rawEvents.ToArray());
}
/// <summary>