eno test client
Project description
testing phone networks with GSM modules
### requirements
* one or more eno hardware nodes (Beaglebone Black + a Fona module)
* Python 2.7
### installation
```shell
$ pip install eno
```
### usage
A cluster of eno hardware nodes are setup
with network connectivity to a testing machine.
The testing machine uses `eno.nodes.Node` to control the connected nodes
and to read data from them.
The nodes themselves run the `eno.server.app`.
Other clients (like the testing machine) connect to this server
to give instructions to the hardware and to read data back.
The hardware uses [python-gsmmodem](https://github.com/faucamp/python-gsmmodem)
to communicate with the onboard GSM modem.
The testing machine should have an `~/.enorc` describing the test cluster:
```yaml
- name: node A
ip_address: 192.168.1.102
sim: endaga
- name: node B
ip_address: 192.168.1.105
sim: endaga
- name: node C
ip_address: 192.168.1.107
sim: ting
phone_number: 19195551234
```
See additional examples in `server.py` and `sample_test.py`.
### testing concurrent calls
By default, when making a call, the test server
will make the modem hang up a few seconds after the call connects.
I experimented with a `/hangup` endpoint but that complicates things --
we would need signals and some WSGI runner
in order to have more than one server process.
So instead you can specify `hangup_after` as a request param,
this will hangup the call after the specified number of seconds.
### license
MIT
### releases
* 0.0.17 - adjusts return values in `server.call`
* 0.0.16 - fixes modem definition
* 0.0.15 - adds call functionality
* 0.0.14 - adds more request timeouts and `Node.get_info`
* 0.0.13 - adjusts handling of `Node.wait_for_activity`
* 0.0.12 - adds protocol in `Node.server_address`
* 0.0.11 - fixes port default
* 0.0.10 - allows tilde expansion when searching for enorc config file
* 0.0.9 - adds `Node.wait_for_activity` for sms
* 0.0.8 - adjusts handling of sms log in Node class
* 0.0.7 - changes sms log deletion method
* 0.0.6 - improves error handling and modem connection management
* 0.0.5 - adjusts package structure
* 0.0.4 - adds missing requests requirement
* 0.0.3 - adjusts server script filename
* 0.0.2 - adds SMS handling capabilities
* 0.0.1 - barebones setup for pypi
### release process
you need a `~/.pypirc` like this:
```
[distutils]
index-servers =
pypi
[pypi]
repository: https://pypi.python.org/pypi
username: yosemitebandit
password: mhm
```
bump the versions in `setup.py` and here in the readme, then run:
```shell
$ git tag 0.0.1 -m 'eno-python v0.0.1'
$ git push origin master --tags
$ python setup.py sdist upload -r pypi
```
### requirements
* one or more eno hardware nodes (Beaglebone Black + a Fona module)
* Python 2.7
### installation
```shell
$ pip install eno
```
### usage
A cluster of eno hardware nodes are setup
with network connectivity to a testing machine.
The testing machine uses `eno.nodes.Node` to control the connected nodes
and to read data from them.
The nodes themselves run the `eno.server.app`.
Other clients (like the testing machine) connect to this server
to give instructions to the hardware and to read data back.
The hardware uses [python-gsmmodem](https://github.com/faucamp/python-gsmmodem)
to communicate with the onboard GSM modem.
The testing machine should have an `~/.enorc` describing the test cluster:
```yaml
- name: node A
ip_address: 192.168.1.102
sim: endaga
- name: node B
ip_address: 192.168.1.105
sim: endaga
- name: node C
ip_address: 192.168.1.107
sim: ting
phone_number: 19195551234
```
See additional examples in `server.py` and `sample_test.py`.
### testing concurrent calls
By default, when making a call, the test server
will make the modem hang up a few seconds after the call connects.
I experimented with a `/hangup` endpoint but that complicates things --
we would need signals and some WSGI runner
in order to have more than one server process.
So instead you can specify `hangup_after` as a request param,
this will hangup the call after the specified number of seconds.
### license
MIT
### releases
* 0.0.17 - adjusts return values in `server.call`
* 0.0.16 - fixes modem definition
* 0.0.15 - adds call functionality
* 0.0.14 - adds more request timeouts and `Node.get_info`
* 0.0.13 - adjusts handling of `Node.wait_for_activity`
* 0.0.12 - adds protocol in `Node.server_address`
* 0.0.11 - fixes port default
* 0.0.10 - allows tilde expansion when searching for enorc config file
* 0.0.9 - adds `Node.wait_for_activity` for sms
* 0.0.8 - adjusts handling of sms log in Node class
* 0.0.7 - changes sms log deletion method
* 0.0.6 - improves error handling and modem connection management
* 0.0.5 - adjusts package structure
* 0.0.4 - adds missing requests requirement
* 0.0.3 - adjusts server script filename
* 0.0.2 - adds SMS handling capabilities
* 0.0.1 - barebones setup for pypi
### release process
you need a `~/.pypirc` like this:
```
[distutils]
index-servers =
pypi
[pypi]
repository: https://pypi.python.org/pypi
username: yosemitebandit
password: mhm
```
bump the versions in `setup.py` and here in the readme, then run:
```shell
$ git tag 0.0.1 -m 'eno-python v0.0.1'
$ git push origin master --tags
$ python setup.py sdist upload -r pypi
```
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
eno-0.0.17.tar.gz
(5.9 kB
view details)
File details
Details for the file eno-0.0.17.tar.gz
.
File metadata
- Download URL: eno-0.0.17.tar.gz
- Upload date:
- Size: 5.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 334ec1151c23dd877d7ed8c8914b425be92f975d8fbd85b14583c4ecffc94c6f |
|
MD5 | 4e3d9e2d3aef350336f500e6919f309a |
|
BLAKE2b-256 | d681d9aea049a656eb907fe6c223fa71008a0e32961b83d7f5973baacd15565d |