diff options
author | Manish Sinha <mail@manishsinha.net> | 2010-10-03 13:28:20 +0530 |
---|---|---|
committer | Manish Sinha <mail@manishsinha.net> | 2010-10-03 13:28:20 +0530 |
commit | 2c7f594dd15abba4ec3bf8b09b750f047f320369 (patch) | |
tree | 375731121bbd8f99b6162197560562e57c8de434 | |
parent | e63b1605cbc5d2c4176bb422d433facc31eac119 (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.cs | 50 | ||||
-rw-r--r-- | Zeitgeist.Testsuite/Log/TestInsertEvents.cs | 16 | ||||
-rw-r--r-- | Zeitgeist.Testsuite/Zeitgeist.Testsuite.csproj | 1 | ||||
-rw-r--r-- | Zeitgeist/Client/ILog.cs | 12 | ||||
-rw-r--r-- | Zeitgeist/Datamodel/TimeRange.cs | 55 | ||||
-rw-r--r-- | Zeitgeist/LogClient.cs | 35 |
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> |