View Source LocationSimulator
Use for simulating GPS location (longitude, latitude, altitude) data. Support scalable for test workload.
Source code is available on Github
Package for using on Hex.pm
achitecture
Achitecture
The library has 3 main part:
- Supervisor. Lib uses
PartitionSupervisor
for creating worker from config - Worker. Generating GPS with user config
- Callback module. This is defined by user to handle event from worker
api-call-flow
Api call flow
sequenceDiagram
participant CallbackMod
participant Worker
participant Api
participant Supervisor
Api->>Supervisor: Start with workers from config
Supervisor->>Worker: Start GPS generator
Worker->>CallbackMod: call start event
Worker->>CallbackMod: call gps event
Worker->>CallbackMod: call stop event
(for in local you need install extension to view flow)
installation
Installation
Library can be installed
by adding location_simulator
to your list of dependencies in mix.exs
:
def deps do
[
{:location_simulator, "~> 0.3.0"}
]
end
If you need to modify source please go to Github and clone repo.
guide
Guide
Start LocationSimulator with default config:
LocationSimulator.start()
With default config simulator will print to Logger with default config
Start with your callback & config:
config =
%{
worker: 3,
event: 100,
interval: 1000,
random_range: 0,
direciton: :random,
altitude: 100,
altitude_way: :up,
callback: MyCallbackModule
}
LocationSimulator.start(config)
Simulator support directions:
:north, :south, :east, :west, :north_east, :north_west, :south_east, :south_west
If :direction is missed or equal :random, simulator will random a direction for each worker.
example
Example
Start library in Elixir's shell:
mix deps.get
iex -S mix
iex(1)> LocationSimulator.start()
For writing callback module please go to LocationSimulator.Event
document.