Skip to content

Commit

Permalink
Merge branch 'master' into dependabot/bundler/docs/nokogiri-1.18.3
Browse files Browse the repository at this point in the history
  • Loading branch information
Puchaczov authored Feb 25, 2025
2 parents e57abc2 + b1fdc62 commit a897259
Show file tree
Hide file tree
Showing 42 changed files with 394 additions and 267 deletions.
6 changes: 4 additions & 2 deletions Musoq.Benchmarks/Components/BenchmarkBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ namespace Musoq.Benchmarks.Components;

public class BenchmarkBase
{
private readonly ILoggerResolver _loggerResolver = new BenchmarkLoggerResolver();

static BenchmarkBase()
{
Culture.ApplyWithDefaultCulture();
Expand All @@ -24,7 +26,7 @@ protected CompiledQuery CreateForCountryWithOptions(
return InstanceCreator.CompileForExecution(
script,
Guid.NewGuid().ToString(),
new GenericSchemaProvider<CountryEntity, CountryEntityTable>(sources, CountryEntity.KNameToIndexMap, CountryEntity.KIndexToObjectAccessMap), compilationOptions);
new GenericSchemaProvider<CountryEntity, CountryEntityTable>(sources, CountryEntity.KNameToIndexMap, CountryEntity.KIndexToObjectAccessMap), _loggerResolver, compilationOptions);
}

protected CompiledQuery CreateForProfilesWithOptions(
Expand All @@ -35,6 +37,6 @@ protected CompiledQuery CreateForProfilesWithOptions(
return InstanceCreator.CompileForExecution(
script,
Guid.NewGuid().ToString(),
new GenericSchemaProvider<ProfileEntity, ProfileEntityTable>(sources, ProfileEntity.KNameToIndexMap, ProfileEntity.KIndexToObjectAccessMap), compilationOptions);
new GenericSchemaProvider<ProfileEntity, ProfileEntityTable>(sources, ProfileEntity.KNameToIndexMap, ProfileEntity.KIndexToObjectAccessMap), _loggerResolver, compilationOptions);
}
}
34 changes: 34 additions & 0 deletions Musoq.Benchmarks/Components/BenchmarkLoggerResolver.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
using Microsoft.Extensions.Logging;
using Musoq.Converter;

namespace Musoq.Benchmarks.Components;

public class BenchmarkLoggerResolver : ILoggerResolver
{
public ILogger ResolveLogger()
{
return new EmptyLogger<object>();
}

public ILogger<T> ResolveLogger<T>()
{
return new EmptyLogger<T>();
}

private class EmptyLogger<T> : ILogger<T>
{
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception? exception, Func<TState, Exception?, string> formatter)
{
}

public bool IsEnabled(LogLevel logLevel)
{
return false;
}

public IDisposable? BeginScope<TState>(TState state) where TState : notnull
{
return null;
}
}
}
5 changes: 3 additions & 2 deletions Musoq.Converter.Tests/BuildTests.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System;
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Musoq.Converter.Tests.Components;
using Musoq.Converter.Tests.Schema;
using Musoq.Tests.Common;

Expand Down Expand Up @@ -28,7 +29,7 @@ public async Task CompileForStoreAsyncTest()
{
var query = "select 1 from #system.dual()";

var arrays = await InstanceCreator.CompileForStoreAsync(query, Guid.NewGuid().ToString(), new SystemSchemaProvider());
var arrays = await InstanceCreator.CompileForStoreAsync(query, Guid.NewGuid().ToString(), new SystemSchemaProvider(), new TestsLoggerResolver());

Assert.IsNotNull(arrays.DllFile);
Assert.IsNotNull(arrays.PdbFile);
Expand All @@ -39,7 +40,7 @@ public async Task CompileForStoreAsyncTest()

private (byte[] DllFile, byte[] PdbFile) CreateForStore(string script)
{
return InstanceCreator.CompileForStore(script, Guid.NewGuid().ToString(), new SystemSchemaProvider());
return InstanceCreator.CompileForStore(script, Guid.NewGuid().ToString(), new SystemSchemaProvider(), new TestsLoggerResolver());
}

static BuildTests()
Expand Down
21 changes: 21 additions & 0 deletions Musoq.Converter.Tests/Components/TestsLoggerResolver.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using Microsoft.Extensions.Logging;
using Moq;

namespace Musoq.Converter.Tests.Components;

public class TestsLoggerResolver : ILoggerResolver
{
public ILogger ResolveLogger()
{
var logger = new Mock<ILogger>();

return logger.Object;
}

public ILogger<T> ResolveLogger<T>()
{
var logger = new Mock<ILogger<T>>();

return logger.Object;
}
}
1 change: 1 addition & 0 deletions Musoq.Converter.Tests/Musoq.Converter.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
<PackageReference Include="Moq" Version="4.20.69" />
<PackageReference Include="MSTest.TestAdapter" Version="3.1.1" />
<PackageReference Include="MSTest.TestFramework" Version="3.1.1" />
</ItemGroup>
Expand Down
4 changes: 2 additions & 2 deletions Musoq.Converter/Build/TranformTree.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

namespace Musoq.Converter.Build;

public class TransformTree(BuildChain successor) : BuildChain(successor)
public class TransformTree(BuildChain successor, ILoggerResolver loggerResolver) : BuildChain(successor)
{
public override void Build(BuildItems items)
{
Expand All @@ -22,7 +22,7 @@ public override void Build(BuildItems items)

var metadata =
items.CreateBuildMetadataAndInferTypesVisitor?.Invoke(items.SchemaProvider, extractColumnsVisitor.Columns) ??
new BuildMetadataAndInferTypesVisitor(items.SchemaProvider, extractColumnsVisitor.Columns);
new BuildMetadataAndInferTypesVisitor(items.SchemaProvider, extractColumnsVisitor.Columns, loggerResolver.ResolveLogger<BuildMetadataAndInferTypesVisitor>());
var metadataTraverser = new BuildMetadataAndInferTypesTraverseVisitor(metadata);

queryTree.Accept(metadataTraverser);
Expand Down
10 changes: 10 additions & 0 deletions Musoq.Converter/ILoggerResolver.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
using Microsoft.Extensions.Logging;

namespace Musoq.Converter;

public interface ILoggerResolver
{
public ILogger ResolveLogger();

public ILogger<T> ResolveLogger<T>();
}
34 changes: 18 additions & 16 deletions Musoq.Converter/InstanceCreator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ namespace Musoq.Converter;

public static class InstanceCreator
{
public static BuildItems CreateForAnalyze(string script, string assemblyName, ISchemaProvider provider)
public static BuildItems CreateForAnalyze(string script, string assemblyName, ISchemaProvider provider, ILoggerResolver loggerResolver)
{
var items = new BuildItems
{
Expand All @@ -32,53 +32,55 @@ public static BuildItems CreateForAnalyze(string script, string assemblyName, IS

var chain = new CreateTree(
new TransformTree(
new TurnQueryIntoRunnableCode(null)));
new TurnQueryIntoRunnableCode(null), loggerResolver));

chain.Build(items);

return items;
}

public static (byte[] DllFile, byte[] PdbFile) CompileForStore(string script, string assemblyName, ISchemaProvider provider)
public static (byte[] DllFile, byte[] PdbFile) CompileForStore(string script, string assemblyName, ISchemaProvider provider, ILoggerResolver loggerResolver)
{
var items = CreateForAnalyze(script, assemblyName, provider);
var items = CreateForAnalyze(script, assemblyName, provider, loggerResolver);

return (items.DllFile, items.PdbFile);
}

public static Task<(byte[] DllFile, byte[] PdbFile)> CompileForStoreAsync(string script, string assemblyName, ISchemaProvider provider)
public static Task<(byte[] DllFile, byte[] PdbFile)> CompileForStoreAsync(string script, string assemblyName, ISchemaProvider provider, ILoggerResolver loggerResolver)
{
return Task.Factory.StartNew(() => CompileForStore(script, assemblyName, provider));
return Task.Factory.StartNew(() => CompileForStore(script, assemblyName, provider, loggerResolver));
}

public static CompiledQuery CompileForExecution(string script, string assemblyName, ISchemaProvider schemaProvider)
public static CompiledQuery CompileForExecution(string script, string assemblyName, ISchemaProvider schemaProvider, ILoggerResolver loggerResolver)
{
return CompileForExecution(
script,
assemblyName,
schemaProvider,
schemaProvider,
loggerResolver,
() => new CreateTree(
new TransformTree(
new TurnQueryIntoRunnableCode(null))),
new TurnQueryIntoRunnableCode(null), loggerResolver)),
_ => {});
}

public static CompiledQuery CompileForExecution(string script, string assemblyName, ISchemaProvider schemaProvider, CompilationOptions compilationOptions)
public static CompiledQuery CompileForExecution(string script, string assemblyName, ISchemaProvider schemaProvider, ILoggerResolver loggerResolver, CompilationOptions compilationOptions)
{
return CompileForExecution(
script,
assemblyName,
schemaProvider,
schemaProvider,
loggerResolver,
() => new CreateTree(
new TransformTree(
new TurnQueryIntoRunnableCode(null))),
new TurnQueryIntoRunnableCode(null), loggerResolver)),
buildItems =>
{
buildItems.CompilationOptions = compilationOptions;
});
}

public static CompiledQuery CompileForExecution(string script, string assemblyName, ISchemaProvider schemaProvider, Func<BuildChain> createChain, Action<BuildItems> modifyBuildItems)
public static CompiledQuery CompileForExecution(string script, string assemblyName, ISchemaProvider schemaProvider, ILoggerResolver loggerResolver, Func<BuildChain> createChain, Action<BuildItems> modifyBuildItems)
{
var items = new BuildItems
{
Expand All @@ -98,7 +100,7 @@ public static CompiledQuery CompileForExecution(string script, string assemblyNa
createChain?.Invoke() ??
new CreateTree(
new TransformTree(
new TurnQueryIntoRunnableCode(null))
new TurnQueryIntoRunnableCode(null), loggerResolver)
);

CompilationException compilationError = null;
Expand Down Expand Up @@ -162,9 +164,9 @@ public static CompiledQuery CompileForExecution(string script, string assemblyNa
return new CompiledQuery(runnable);
}

public static Task<CompiledQuery> CompileForExecutionAsync(string script, string assemblyName, ISchemaProvider schemaProvider, IReadOnlyDictionary<uint, IReadOnlyDictionary<string, string>> positionalEnvironmentVariables)
public static Task<CompiledQuery> CompileForExecutionAsync(string script, string assemblyName, ISchemaProvider schemaProvider, ILoggerResolver loggerResolver, IReadOnlyDictionary<uint, IReadOnlyDictionary<string, string>> positionalEnvironmentVariables)
{
return Task.Factory.StartNew(() => CompileForExecution(script, assemblyName, schemaProvider));
return Task.Factory.StartNew(() => CompileForExecution(script, assemblyName, schemaProvider, loggerResolver));
}

private static IRunnable CreateRunnableForDebug(BuildItems items, Func<Assembly> loadAssembly)
Expand Down
2 changes: 1 addition & 1 deletion Musoq.Converter/Musoq.Converter.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Version>3.5.1</Version>
<Version>4.0.0</Version>
<Authors>Jakub Puchała</Authors>
<Product>Musoq</Product>
<PackageProjectUrl>https://github.com/Puchaczov/Musoq</PackageProjectUrl>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
using System;
using System.Collections.Generic;
using Microsoft.Extensions.Logging;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
using Musoq.Evaluator.Tests.Components;
using Musoq.Evaluator.Tests.Schema.EnvironmentVariable;
using Musoq.Evaluator.Visitors;
Expand All @@ -19,6 +21,7 @@ public void WhenPassedToSchemaMethodArgumentMustHaveKnownType_ShouldHave()
var lexer = new Lexer(query, true);
var parser = new Musoq.Parser.Parser(lexer);
var tree = parser.ComposeAll();
var logger = new Mock<ILogger<EnvironmentVariablesBuildMetadataAndInferTypesVisitor>>();

var visitor = new EnvironmentVariablesBuildMetadataAndInferTypesVisitor(
new EnvironmentVariablesSchemaProvider(),
Expand All @@ -31,7 +34,7 @@ public void WhenPassedToSchemaMethodArgumentMustHaveKnownType_ShouldHave()
{
{0, Array.Empty<EnvironmentVariableEntity>()},
{1, [new ("KEY_1", "VALUE_1")]}
});
}, logger.Object);

var traverser = new BuildMetadataAndInferTypesTraverseVisitor(visitor);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Extensions.Logging;
using Musoq.Evaluator.Tests.Schema.EnvironmentVariable;
using Musoq.Evaluator.Visitors;
using Musoq.Parser.Nodes.From;
Expand All @@ -11,8 +12,9 @@ namespace Musoq.Evaluator.Tests.Components;
public class EnvironmentVariablesBuildMetadataAndInferTypesVisitor(
ISchemaProvider provider,
IReadOnlyDictionary<string, string[]> columns,
IDictionary<uint, IEnumerable<EnvironmentVariableEntity>> sources)
: BuildMetadataAndInferTypesVisitor(provider, columns)
IDictionary<uint, IEnumerable<EnvironmentVariableEntity>> sources,
ILogger<EnvironmentVariablesBuildMetadataAndInferTypesVisitor> logger)
: BuildMetadataAndInferTypesVisitor(provider, columns, logger)
{
public List<Type> PassedSchemaArguments { get; private set; } = new();

Expand Down
22 changes: 22 additions & 0 deletions Musoq.Evaluator.Tests/Components/TestsLoggerResolver.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using Microsoft.Extensions.Logging;
using Moq;
using Musoq.Converter;

namespace Musoq.Evaluator.Tests.Components;

public class TestsLoggerResolver : ILoggerResolver
{
public ILogger ResolveLogger()
{
var loggerMock = new Mock<ILogger>();

return loggerMock.Object;
}

public ILogger<T> ResolveLogger<T>()
{
var loggerMock = new Mock<ILogger<T>>();

return loggerMock.Object;
}
}
6 changes: 2 additions & 4 deletions Musoq.Evaluator.Tests/PassPrimitiveTypesTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -122,15 +122,13 @@ public ISchemaColumn[] GetColumnsByName(string name)
public SchemaTableMetadata Metadata { get; } = new(typeof(TestEntity));
}

private class TestEntity
{
}
private class TestEntity;

private CompiledQuery CreateAndRunVirtualMachine(string script, IEnumerable<TestEntity> source, Action<object[]> onGetTableOrRowSource, WhenCheckedParameters whenChecked)
{
var environmentVariablesMock = new Mock<IReadOnlyDictionary<uint, IReadOnlyDictionary<string, string>>>();
environmentVariablesMock.Setup(f => f[It.IsAny<uint>()]).Returns(new Dictionary<string, string>());

return InstanceCreator.CompileForExecution(script, Guid.NewGuid().ToString(), new TestSchemaProvider(source, onGetTableOrRowSource, whenChecked));
return InstanceCreator.CompileForExecution(script, Guid.NewGuid().ToString(), new TestSchemaProvider(source, onGetTableOrRowSource, whenChecked), LoggerResolver);
}
}
12 changes: 9 additions & 3 deletions Musoq.Evaluator.Tests/Schema/Basic/BasicEntityTestBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using Musoq.Converter;
using Musoq.Converter.Build;
using Musoq.Evaluator.Tables;
using Musoq.Evaluator.Tests.Components;
using Musoq.Schema;
using Musoq.Tests.Common;

Expand All @@ -20,6 +21,8 @@ static BasicEntityTestBase()
}

protected CancellationTokenSource TokenSource { get; } = new();

protected ILoggerResolver LoggerResolver { get; } = new TestsLoggerResolver();

protected BuildItems CreateBuildItems<T>(string script)
{
Expand All @@ -28,7 +31,8 @@ protected BuildItems CreateBuildItems<T>(string script)
Guid.NewGuid().ToString(),
typeof(T) == typeof(UsedColumnsOrUsedWhereEntity) ?
new UsedColumnsOrUsedWhereSchemaProvider<UsedColumnsOrUsedWhereEntity>(CreateMockObjectFor<UsedColumnsOrUsedWhereEntity>()) :
new MockBasedSchemaProvider(CreateMockObjectFor<BasicEntity>()));
new MockBasedSchemaProvider(CreateMockObjectFor<BasicEntity>()),
LoggerResolver);
}

protected CompiledQuery CreateAndRunVirtualMachine<T>(
Expand All @@ -39,7 +43,8 @@ protected CompiledQuery CreateAndRunVirtualMachine<T>(
return InstanceCreator.CompileForExecution(
script,
Guid.NewGuid().ToString(),
new BasicSchemaProvider<T>(sources));
new BasicSchemaProvider<T>(sources),
LoggerResolver);
}

protected CompiledQuery CreateAndRunVirtualMachine(
Expand All @@ -50,7 +55,8 @@ protected CompiledQuery CreateAndRunVirtualMachine(
return InstanceCreator.CompileForExecution(
script,
Guid.NewGuid().ToString(),
schemaProvider);
schemaProvider,
LoggerResolver);
}

private IReadOnlyDictionary<uint,IReadOnlyDictionary<string,string>> CreateMockedEnvironmentVariables()
Expand Down
Loading

0 comments on commit a897259

Please sign in to comment.