pineconesim

command
v0.11.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 17, 2022 License: Apache-2.0 Imports: 16 Imported by: 0

README

Pinecone Simulator

The Pinecone Simulator is a tool used to test Pinecone nodes in various scenarios. These scenarios include both fixed topologies and node mobility.

Running

From the top-level Pinecone directory, run the following: go run cmd/pineconesim/main.go

Simulator UI

To access the simulator's interface, visit localhost:65432 in your web browser.

Development

Design Goals

The overall design goal of the simulator is to be able to handle running a large number of Pinecone nodes while still being responsive.

It is preferable that the simulator can be run offline and without any external build or runtime dependencies. Having a simulator that is extremely simple to run and modify makes it easier for more developers to test Pinecone, thus making Pinecone better in return.

The simulator UI runs in the web browser. This is done for a few reasons:

  • web browsers are ubiquitous
  • cross platform by default
  • can easily connect to a remotely running simulator
  • multiple developers can have a view into the same simulator instance
Detailed Design

In order to decouple the effects of running the simulator from the performance of the Pinecone node/s, the simulator works by sending/receiving state change information over channels to/from each Pinecone node. When receiving information, the relevant state is cached locally in the simulator.

The simulator UI works using a websocket to the running simulator. Upon accessing the simulator instance in the browser, a websocket is established that the simulator can use to forward state change events up to the UI. The first message received from the simulator will contain the current state of the entire simulation. After that, the simulator will only send state update messages in the order that they occurred. The websocket can also be used for the UI to request changes to the running simulation by sending messages down to the running simulator.

        +--------------+
        | UI / Browser |
        +--------------+
               ⇅ (websocket)
+-------------------------------+
|           Simulator           |
|          ⤢        ⤡ (chan)   |
| +----------+     +----------+ |
| | Pinecone | ... | Pinecone | |
| |   Node   |     |   Node   | |
| +----------+     +----------+ |
+-------------------------------+

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
graphs

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL