Petabridge.Cmd.Testing 1.3.2

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package Petabridge.Cmd.Testing --version 1.3.2                
NuGet\Install-Package Petabridge.Cmd.Testing -Version 1.3.2                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Petabridge.Cmd.Testing" Version="1.3.2" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Petabridge.Cmd.Testing --version 1.3.2                
#r "nuget: Petabridge.Cmd.Testing, 1.3.2"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Petabridge.Cmd.Testing as a Cake Addin
#addin nuget:?package=Petabridge.Cmd.Testing&version=1.3.2

// Install Petabridge.Cmd.Testing as a Cake Tool
#tool nuget:?package=Petabridge.Cmd.Testing&version=1.3.2                

Petabridge.Cmd

Petabridge.Cmd is a command-line interface (CLI) for Akka.NET, designed to help monitor and manage live ActorSystems through simple commands.

Akka.NET logo

Use

After you've installed the Petabridge.Cmd.Host into your Akka.NET application and the pbm client onto your workstation, you can connect to your server, download any commands that are defined on them, and begin executing them right away!

Some examples:

pbm actor hierarchy

Only works when Petabridge.Cmd.Cluster is installed.

pbm cluster show

Down All Unreachable Nodes in Cluster

Only works when Petabridge.Cmd.Cluster is installed.

pbm cluster down-unreachable

There are dozens of built-in Petabridge.Cmd commands and it's quite easy to build your own custom ones!

Installation

In order to use Petabridge.Cmd you must follow our installation instructions and get both a server and a client up and running.

Default Ports and Hostnames

By default, Petabridge.Cmd.Host will open the following ports for accepting TCP connections from pbm clients:

  • Port: 9110
  • Host: All addresses (0.0.0.0)

Server and Command Pallette Installation

Before we can use the Petabridge.Cmd client (pbm) we need to install the Petabridge.Cmd server inside one of our Akka.NET applications - which we can do by installing the Petabridge.Cmd.Host NuGet package:

dotnet add package Petabridge.Cmd.Host

Next, we just need to hook this up into our ActorSystem.

Akka.Hosting is a HOCON-less approach to configuring and instantiating Akka.NET applications, and it's the easiest way to configure Petabridge.Cmd inside your ActorSystem - using the AddPetabridgeCmd method found in the Petabridge.Cmd.Host package:

using var host = await (new HostBuilder().ConfigureServices((context, collection) =>
{
    collection.AddAkka("PbmSys", builder =>
    {
        builder.WithRemoting("localhost", 29909)
            .WithClustering(new ClusterOptions(){ SeedNodes = new[]{ "akka.tcp://PbmSys@localhost:29909" }})
        .AddPetabridgeCmd(
                new PetabridgeCmdOptions(){ Host = "localhost", Port = 8222}, // optional - customize pbm bindings 
                cmd =>
        {
            cmd.RegisterCommandPalette(new RemoteCommands());
            cmd.RegisterCommandPalette(ClusterCommands.Instance);
        });
    });
}).StartAsync());

You can register all of your CommandPalette instances using the builder and Petabridge.Cmd will be started up automatically. All HOCON values can still be used to configure binding addresses.

Manually Starting Petabridge.Cmd

In order to active Petabridge.Cmd.Host inside your Akka.NET application, you need to make the following call inside your application (if you're not using Akka.Hosting:)

private static void Main(string[] args)
{
    using (var a = ActorSystem.Create("Foo"))
    {
        var cmd = PetabridgeCmd.Get(a);
        cmd.Start();
        a.WhenTerminated.Wait();
    }
}

Registering Additional Command Palettes

See the full set of built-in Petabridge.Cmd palettes here.

Petabridge.Cmd ships with an additional set of commands for managing Akka.Cluster applications, which are not loaded by default. After installing the Petabridge.Cmd.Cluster NuGet package into your host application, you an register the commands with the PetabridgeCmd plugin via the following syntax:

using (var a = ActorSystem.Create("webcrawler"))
{
    var cmd = PetabridgeCmd.Get(a);
    cmd.RegisterCommandPalette(ClusterCommands.Instance); // non-default command palette
    cmd.Start();
    a.WhenTerminated.Wait();
}

Or when using Akka.Hosting:

collection.AddAkka("PbmSys", builder =>
{
    builder.WithRemoting("localhost", 29909)
        .WithClustering(new ClusterOptions(){ SeedNodes = new[]{ "akka.tcp://PbmSys@localhost:29909" }})
    .AddPetabridgeCmd(
            new PetabridgeCmdOptions(){ Host = "localhost", Port = 8222}, // optional - customize pbm bindings 
            cmd =>
    {
        cmd.RegisterCommandPalette(new RemoteCommands());
        cmd.RegisterCommandPalette(ClusterCommands.Instance); // non-default command palette
    });
});

Client Installation

The easiest way to install Petabridge.Cmd's client is to install the pbm .NET global tool:

> dotnet tool install --global pbm 

To see full details about how the Petabridge.Cmd client and server connectivity model works, please see "How Petabridge.Cmd Works."

Need Help?

To get help with Petabridge.Cmd you can file a bug on our issue tracker or contact us in Discord.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on Petabridge.Cmd.Testing:

Package Downloads
FAkka.Shared

Package Description

FAkka.Server.Linux

Package Description

FAkka.Shared.Linux

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.4.3 152 6/17/2024
1.4.2 89 6/11/2024
1.4.1 130 3/18/2024
1.4.0 156 1/12/2024
1.3.3 120 1/10/2024
1.3.2 218 7/18/2023
1.3.1 230 5/4/2023
1.3.0 1,184 3/3/2023
1.3.0-beta1 127 3/1/2023
1.2.2 309 1/19/2023
1.2.1 341 12/19/2022
1.2.0 345 11/18/2022
1.1.4 178 7/17/2023
1.1.3 435 10/20/2022
1.1.2 442 9/28/2022
1.1.1 486 9/23/2022
1.1.0 473 6/9/2022
1.0.2 406 11/16/2021
1.0.1 462 8/3/2021
1.0.0 411 7/26/2021
0.8.5 410 5/3/2021
0.8.4 394 4/30/2021
0.8.3 413 3/18/2021
0.8.2 463 11/24/2020
0.8.1 476 11/16/2020
0.8.0 601 3/11/2020
0.8.0-rc2 344 3/10/2020
0.8.0-rc1 357 3/3/2020
0.7.1 554 3/3/2020
0.7.0 627 10/3/2019
0.6.3 717 7/30/2019
0.6.2 609 6/19/2019
0.6.1 679 5/19/2019
0.6.0 655 5/9/2019
0.5.0 665 3/6/2019
0.4.1 764 12/7/2018
0.4.0 798 11/27/2018
0.3.3 1,155 2/27/2018
0.3.2 1,090 12/20/2017
0.3.1 1,027 9/19/2017
0.3.0 979 9/14/2017
0.2.2 991 6/25/2017
0.2.1 972 6/6/2017
0.2.0 991 5/21/2017
0.1.2 996 4/25/2017
0.1.1 966 4/21/2017
0.1.0 959 4/19/2017

This is a pretty significant set of feature improvements for [Petabridge.Cmd](https://cmd.petabridge.com/).
New Commands**
In 1.3.2 we've added two new commands to the built-in pallettes contained inside Petabridge.Cmd.Host:
`net clients` - gives a printout of all local and remote clients connected to the current host.
`net drop-all-clients` - a somewhat dangerous command intended to be used by ops teams that rely on lots of `PbmClient` instances internally. This command will automatically terminate all clients connected to the current host. Clients will receive a notification that the host has disconnected from them.
Other Changes and Improvements**
`actor hierarchy` now prints out all `/system` actors by default - to turn this behavior off please pass in the new `-e` parameter to exclude `/system` actors from your query.
Fixed stability issues with `IPbmClient` not always shutting itself off cleanly on both the server and the client.
`IPbmClient` now includes a specific `CloseAsync` method along with a `Task WhenClosed` that you can await on (in case the server shuts the client off first.)
`IPbmClient` now implements `IAsyncDisposable`, which will just call `CloseAsync` under the covers.