RpcInvestigator/UnitTests/Environment.cs

69 lines
2.1 KiB
C#

//
// Copyright (c) 2022-present, Trail of Bits, Inc.
// All rights reserved.
//
// This source code is licensed in accordance with the terms specified in
// the LICENSE file found in the root directory of this source tree.
//
using Microsoft.VisualStudio.TestTools.UnitTesting;
using RpcInvestigator;
using System;
using System.IO;
namespace UnitTests
{
internal class Environment
{
public Settings m_Settings;
public RpcLibrary m_Library;
public Environment()
{
}
public void Initialize()
{
TraceLogger.Initialize();
try
{
m_Settings = Settings.LoadDefault();
//
// TODO: This is hard-coded to match our github workflow action that installs
// the debugging tools from an MSI stored in Digital Ocean. This sucks.
//
m_Settings.m_DbghelpPath = "C:\\Program Files (x86)\\Windows Kits\\10\\bin\\10.0.22621.0\\x64\\dbghelp.dll";
m_Settings.m_SymbolPath = @"srv*c:\\symbols*https://msdl.microsoft.com/download/symbols";
}
catch (Exception ex)
{
Assert.Fail("Exception loading default settings: " + ex.Message);
}
Assert.IsTrue(File.Exists(m_Settings.m_DbghelpPath));
try
{
//
// Important: each instance of Environment must setup a database unique
// to the caller, as the database is not meant to be thread-safe and
// tests can run in parallel.
//
m_Library = new RpcLibrary(Path.GetRandomFileName());
m_Library.Load();
//
// Wipe any existing entries from a prior test.
//
m_Library.Clear();
m_Library.Save();
}
catch (Exception ex)
{
Assert.Fail("Exception loading default library: " + ex.Message);
}
Assert.AreEqual(0, m_Library.GetServerCount());
}
}
}