mirror of
https://github.com/microsoft/regorus.git
synced 2026-08-05 02:16:11 +00:00
Regorus now defaults to rego v1. `import rego.v1` is no longer needed. Additionally, `future` keywords are automatically imported. See https://www.openpolicyagent.org/docs/latest/v0-upgrade/#changes-to-rego-in-opa-v10 to understand the differences between rego v1 and v0. BREAKING CHANGE: v0 style policies will error out by default. To enable v0 behavior, call engine.set_rego_v0(true) before loading policies. Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com>
70 lines
2.0 KiB
C#
70 lines
2.0 KiB
C#
//-----------------------------------------------------------------------
|
|
// <copyright file="Program.cs" company="Microsoft">
|
|
// Copyright (c)2012 Microsoft. All rights reserved.
|
|
// </copyright>
|
|
// <summary>
|
|
// Contains code to test the Regorus class for C#
|
|
// and .NET 8.0 bindings.
|
|
// </summary>
|
|
//-----------------------------------------------------------------------
|
|
|
|
using System.Diagnostics;
|
|
|
|
long nanosecPerTick = (1000L*1000L*1000L) / Stopwatch.Frequency;
|
|
var w = new Stopwatch();
|
|
|
|
|
|
// Force load of modules.
|
|
{
|
|
var _e = new Regorus.Engine();
|
|
var _j = System.Text.Json.JsonDocument.Parse("{}");
|
|
}
|
|
|
|
w.Restart();
|
|
|
|
var engine = new Regorus.Engine();
|
|
engine.SetRegoV0(true);
|
|
|
|
w.Stop();
|
|
var newEngineTicks = w.ElapsedTicks;
|
|
|
|
|
|
w.Restart();
|
|
|
|
// Load policies and data.
|
|
engine.AddPolicyFromFile("../../../tests/aci/framework.rego");
|
|
engine.AddPolicyFromFile("../../../tests/aci/api.rego");
|
|
engine.AddPolicyFromFile("../../../tests/aci/policy.rego");
|
|
engine.AddDataFromJsonFile("../../../tests/aci/data.json");
|
|
|
|
|
|
w.Stop();
|
|
var loadPoliciesTicks = w.ElapsedTicks;
|
|
|
|
|
|
w.Restart();
|
|
|
|
// Set input and eval rule.
|
|
engine.SetInputFromJsonFile("../../../tests/aci/input.json");
|
|
var value = engine.EvalQuery("data.framework.mount_overlay");
|
|
var valueDoc = System.Text.Json.JsonDocument.Parse(value);
|
|
|
|
w.Stop();
|
|
var evalTicks = w.ElapsedTicks;
|
|
|
|
Console.WriteLine("{0}", valueDoc);
|
|
|
|
|
|
Console.WriteLine("Engine creation took {0} msecs", (newEngineTicks*nanosecPerTick)/(1000.0*1000.0));
|
|
Console.WriteLine("Load policies and data took {0} msecs", (loadPoliciesTicks*nanosecPerTick)/(1000.0*1000.0));
|
|
Console.WriteLine("EvalQuery took {0} msecs", (evalTicks*nanosecPerTick)/(1000.0*1000.0));
|
|
|
|
engine = new Regorus.Engine();
|
|
engine.AddPolicy(
|
|
"test.rego",
|
|
"package test\nx = 1\nmessage = `Hello`");
|
|
|
|
engine.SetEnableCoverage(true);
|
|
Console.WriteLine("{0}", engine.EvalRule("data.test.message"));
|
|
Console.WriteLine("{0}", engine.GetCoverageReportPretty());
|