code/KustoCopyTest/InMemoryCache/ActivityTest.cs (75 lines of code) (raw):
using KustoCopyConsole.Entity.InMemory;
using KustoCopyConsole.Entity.RowItems;
using KustoCopyConsole.Entity.State;
namespace KustoCopyTest.InMemoryCache
{
public class ActivityTest : CacheTestBase
{
[Fact]
public void CreateActivity()
{
var cache = new RowItemInMemoryCache(Array.Empty<RowItemBase>());
var state = ActivityState.Active;
cache = cache.AppendItem(new ActivityRowItem
{
State = state,
ActivityName = ACTIVITY_NAME,
SourceTable = SOURCE_TABLE_IDENTITY,
DestinationTable = DESTINATION_TABLE_IDENTITY
});
Assert.Single(cache.ActivityMap);
Assert.Equal(ACTIVITY_NAME, cache.ActivityMap.Keys.First());
Assert.Equal(state, cache.ActivityMap[ACTIVITY_NAME].RowItem.State);
Assert.Equal(
SOURCE_TABLE_IDENTITY,
cache.ActivityMap[ACTIVITY_NAME].RowItem.SourceTable);
}
[Fact]
public void UpdateEmptyActivity()
{
var cache = new RowItemInMemoryCache(Array.Empty<RowItemBase>());
var state1 = ActivityState.Active;
var state2 = ActivityState.Completed;
var item = new ActivityRowItem
{
State = state1,
ActivityName = ACTIVITY_NAME,
SourceTable = SOURCE_TABLE_IDENTITY,
DestinationTable = DESTINATION_TABLE_IDENTITY
};
cache = cache.AppendItem(item);
Assert.Equal(state1, cache.ActivityMap.Values.First().RowItem.State);
// Update
item = item.ChangeState(state2);
cache = cache.AppendItem(item);
Assert.Equal(state2, cache.ActivityMap.Values.First().RowItem.State);
}
[Fact]
public void UpdateIterationWithChildren()
{
var cache = new RowItemInMemoryCache(Array.Empty<RowItemBase>());
var state1 = ActivityState.Active;
var state2 = ActivityState.Completed;
var item = new ActivityRowItem
{
State = state1,
ActivityName = ACTIVITY_NAME,
SourceTable = SOURCE_TABLE_IDENTITY,
DestinationTable = DESTINATION_TABLE_IDENTITY
};
cache = cache.AppendItem(item);
cache = cache.AppendItem(new IterationRowItem
{
State = IterationState.Starting,
ActivityName = ACTIVITY_NAME,
IterationId = 1,
CursorEnd = "ABC"
});
Assert.Equal(state1, cache.ActivityMap.Values.First().RowItem.State);
Assert.Single(cache.ActivityMap.Values.First().IterationMap);
// Update
item = item.ChangeState(state2);
cache = cache.AppendItem(item);
Assert.Equal(state2, cache.ActivityMap.Values.First().RowItem.State);
Assert.Single(cache.ActivityMap.Values.First().IterationMap);
}
}
}