Skip to content

Commit

Permalink
Some test perf low-hanging fruit (#28487)
Browse files Browse the repository at this point in the history
  • Loading branch information
ajcvickers committed Jul 20, 2022
1 parent 8045443 commit bf7c303
Show file tree
Hide file tree
Showing 24 changed files with 1,911 additions and 1,961 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ namespace Microsoft.EntityFrameworkCore.Query;

public abstract class EntitySplittingQueryFixtureBase : SharedStoreFixtureBase<EntitySplittingContext>, IQueryFixtureBase
{
private SplitEntityData _expectedData;

protected EntitySplittingQueryFixtureBase()
{
}
Expand All @@ -21,42 +19,32 @@ public TestSqlLoggerFactory TestSqlLoggerFactory

public Func<DbContext> GetContextCreator() => () => CreateContext();

public IReadOnlyDictionary<Type, object> GetEntityAsserters()
=> new Dictionary<Type, Action<object, object>>
public IReadOnlyDictionary<Type, object> EntityAsserters { get; } = new Dictionary<Type, Action<object, object>>
{
{
typeof(SplitEntityOne), (e, a) =>
{
typeof(SplitEntityOne), (e, a) =>
Assert.Equal(e == null, a == null);
if (a != null)
{
Assert.Equal(e == null, a == null);
if (a != null)
{
var ee =(SplitEntityOne)e;
var aa =(SplitEntityOne)a;
var ee = (SplitEntityOne)e;
var aa = (SplitEntityOne)a;
Assert.Equal(ee.Id, aa.Id);
Assert.Equal(ee.Value, aa.Value);
Assert.Equal(ee.SharedValue, aa.SharedValue);
Assert.Equal(ee.SplitValue, aa.SplitValue);
}
Assert.Equal(ee.Id, aa.Id);
Assert.Equal(ee.Value, aa.Value);
Assert.Equal(ee.SharedValue, aa.SharedValue);
Assert.Equal(ee.SplitValue, aa.SplitValue);
}
}
}.ToDictionary(e => e.Key, e => (object)e.Value);
}
}.ToDictionary(e => e.Key, e => (object)e.Value);

public IReadOnlyDictionary<Type, object> GetEntitySorters()
=> new Dictionary<Type, Func<object, object>>
{
{ typeof(SplitEntityOne), e => ((SplitEntityOne)e)?.Id },
}.ToDictionary(e => e.Key, e => (object)e.Value);
public IReadOnlyDictionary<Type, object> EntitySorters { get; } =
new Dictionary<Type, Func<object, object>> { { typeof(SplitEntityOne), e => ((SplitEntityOne)e)?.Id }, }.ToDictionary(
e => e.Key, e => (object)e.Value);

public ISetSource GetExpectedData()
{
if (_expectedData == null)
{
_expectedData = new SplitEntityData();
}

return _expectedData;
}
=> SplitEntityData.Instance;

protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext context)
{
Expand All @@ -78,8 +66,5 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con
}

protected override void Seed(EntitySplittingContext context)
{
var _ = GetExpectedData();
_expectedData.Seed(context);
}
=> SplitEntityData.Instance.Seed(context);
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,81 +11,79 @@ public Func<DbContext> GetContextCreator()
=> () => CreateContext();

public virtual ISetSource GetExpectedData()
=> new NullSemanticsData();
=> NullSemanticsData.Instance;

public IReadOnlyDictionary<Type, object> GetEntitySorters()
=> new Dictionary<Type, Func<object, object>>
{
{ typeof(NullSemanticsEntity1), e => ((NullSemanticsEntity1)e)?.Id },
{ typeof(NullSemanticsEntity2), e => ((NullSemanticsEntity2)e)?.Id }
}.ToDictionary(e => e.Key, e => (object)e.Value);
public IReadOnlyDictionary<Type, object> EntitySorters { get; } = new Dictionary<Type, Func<object, object>>
{
{ typeof(NullSemanticsEntity1), e => ((NullSemanticsEntity1)e)?.Id },
{ typeof(NullSemanticsEntity2), e => ((NullSemanticsEntity2)e)?.Id }
}.ToDictionary(e => e.Key, e => (object)e.Value);

public IReadOnlyDictionary<Type, object> GetEntityAsserters()
=> new Dictionary<Type, Action<object, object>>
public IReadOnlyDictionary<Type, object> EntityAsserters { get; } = new Dictionary<Type, Action<object, object>>
{
{
typeof(NullSemanticsEntity1), (e, a) =>
{
typeof(NullSemanticsEntity1), (e, a) =>
Assert.Equal(e == null, a == null);
if (a != null)
{
Assert.Equal(e == null, a == null);
if (a != null)
{
var ee = (NullSemanticsEntity1)e;
var aa = (NullSemanticsEntity1)a;
Assert.Equal(ee.Id, aa.Id);
Assert.Equal(ee.BoolA, aa.BoolA);
Assert.Equal(ee.BoolB, aa.BoolB);
Assert.Equal(ee.BoolC, aa.BoolC);
Assert.Equal(ee.IntA, aa.IntA);
Assert.Equal(ee.IntB, aa.IntB);
Assert.Equal(ee.IntC, aa.IntC);
Assert.Equal(ee.StringA, aa.StringA);
Assert.Equal(ee.StringB, aa.StringB);
Assert.Equal(ee.StringC, aa.StringC);
Assert.Equal(ee.NullableBoolA, aa.NullableBoolA);
Assert.Equal(ee.NullableBoolB, aa.NullableBoolB);
Assert.Equal(ee.NullableBoolC, aa.NullableBoolC);
Assert.Equal(ee.NullableIntA, aa.NullableIntA);
Assert.Equal(ee.NullableIntB, aa.NullableIntB);
Assert.Equal(ee.NullableIntC, aa.NullableIntC);
Assert.Equal(ee.NullableStringA, aa.NullableStringA);
Assert.Equal(ee.NullableStringB, aa.NullableStringB);
Assert.Equal(ee.NullableStringC, aa.NullableStringC);
}
var ee = (NullSemanticsEntity1)e;
var aa = (NullSemanticsEntity1)a;
Assert.Equal(ee.Id, aa.Id);
Assert.Equal(ee.BoolA, aa.BoolA);
Assert.Equal(ee.BoolB, aa.BoolB);
Assert.Equal(ee.BoolC, aa.BoolC);
Assert.Equal(ee.IntA, aa.IntA);
Assert.Equal(ee.IntB, aa.IntB);
Assert.Equal(ee.IntC, aa.IntC);
Assert.Equal(ee.StringA, aa.StringA);
Assert.Equal(ee.StringB, aa.StringB);
Assert.Equal(ee.StringC, aa.StringC);
Assert.Equal(ee.NullableBoolA, aa.NullableBoolA);
Assert.Equal(ee.NullableBoolB, aa.NullableBoolB);
Assert.Equal(ee.NullableBoolC, aa.NullableBoolC);
Assert.Equal(ee.NullableIntA, aa.NullableIntA);
Assert.Equal(ee.NullableIntB, aa.NullableIntB);
Assert.Equal(ee.NullableIntC, aa.NullableIntC);
Assert.Equal(ee.NullableStringA, aa.NullableStringA);
Assert.Equal(ee.NullableStringB, aa.NullableStringB);
Assert.Equal(ee.NullableStringC, aa.NullableStringC);
}
},
}
},
{
typeof(NullSemanticsEntity2), (e, a) =>
{
typeof(NullSemanticsEntity2), (e, a) =>
Assert.Equal(e == null, a == null);
if (a != null)
{
Assert.Equal(e == null, a == null);
if (a != null)
{
var ee = (NullSemanticsEntity2)e;
var aa = (NullSemanticsEntity2)a;
Assert.Equal(ee.Id, aa.Id);
Assert.Equal(ee.BoolA, aa.BoolA);
Assert.Equal(ee.BoolB, aa.BoolB);
Assert.Equal(ee.BoolC, aa.BoolC);
Assert.Equal(ee.IntA, aa.IntA);
Assert.Equal(ee.IntB, aa.IntB);
Assert.Equal(ee.IntC, aa.IntC);
Assert.Equal(ee.StringA, aa.StringA);
Assert.Equal(ee.StringB, aa.StringB);
Assert.Equal(ee.StringC, aa.StringC);
Assert.Equal(ee.NullableBoolA, aa.NullableBoolA);
Assert.Equal(ee.NullableBoolB, aa.NullableBoolB);
Assert.Equal(ee.NullableBoolC, aa.NullableBoolC);
Assert.Equal(ee.NullableIntA, aa.NullableIntA);
Assert.Equal(ee.NullableIntB, aa.NullableIntB);
Assert.Equal(ee.NullableIntC, aa.NullableIntC);
Assert.Equal(ee.NullableStringA, aa.NullableStringA);
Assert.Equal(ee.NullableStringB, aa.NullableStringB);
Assert.Equal(ee.NullableStringC, aa.NullableStringC);
}
var ee = (NullSemanticsEntity2)e;
var aa = (NullSemanticsEntity2)a;
Assert.Equal(ee.Id, aa.Id);
Assert.Equal(ee.BoolA, aa.BoolA);
Assert.Equal(ee.BoolB, aa.BoolB);
Assert.Equal(ee.BoolC, aa.BoolC);
Assert.Equal(ee.IntA, aa.IntA);
Assert.Equal(ee.IntB, aa.IntB);
Assert.Equal(ee.IntC, aa.IntC);
Assert.Equal(ee.StringA, aa.StringA);
Assert.Equal(ee.StringB, aa.StringB);
Assert.Equal(ee.StringC, aa.StringC);
Assert.Equal(ee.NullableBoolA, aa.NullableBoolA);
Assert.Equal(ee.NullableBoolB, aa.NullableBoolB);
Assert.Equal(ee.NullableBoolC, aa.NullableBoolC);
Assert.Equal(ee.NullableIntA, aa.NullableIntA);
Assert.Equal(ee.NullableIntB, aa.NullableIntB);
Assert.Equal(ee.NullableIntC, aa.NullableIntC);
Assert.Equal(ee.NullableStringA, aa.NullableStringA);
Assert.Equal(ee.NullableStringB, aa.NullableStringB);
Assert.Equal(ee.NullableStringC, aa.NullableStringC);
}
},
}.ToDictionary(e => e.Key, e => (object)e.Value);
}
},
}.ToDictionary(e => e.Key, e => (object)e.Value);

protected override string StoreName
=> "NullSemanticsQueryTest";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@ namespace Microsoft.EntityFrameworkCore.TestModels.EntitySplitting;

public class SplitEntityData : ISetSource
{
public static readonly SplitEntityData Instance = new();

private readonly SplitEntityOne[] _splitEntityOnes;

public SplitEntityData()
private SplitEntityData()
{
_splitEntityOnes = CreateSplitEntityOnes();
}
Expand Down
Loading

0 comments on commit bf7c303

Please sign in to comment.