Sprint #11 - 2019-05-24

Sprint metrics

  • Story Points: 93

  • Average Velocity: 75

  • Story Points for Code Freeze: 108

  • Story Points for Technical Go-live: 383

User stories

RLAU-1092 - Atom Subscription over Websockets

Story
Criteria

Add atom subscription support over WebSockets to the Swift client library.

  • Contributor: Alex

  • Component: swift library

As a library consumer I want to be able to subscribe to Atoms over WS So that I retrieve all Atoms for a given Address so that I can calculate Balance

Scenario 1: Subscribe to Atoms for Address

Given a Node When I call JSON-RPC method `Atoms.subscribe` Then I can read a stream of Atom updates and handle subscription

Scenario 2: Cancel Atom Subscription

Given a Node When I call JSON-RPC method `Atoms.cancel` with a `subscriptionId` Then I handle the the cancellation accordingly by calling `onComplete` on my Observables

Scenario 3: Subscribe using already used Subscriber Id

Given a Node and an existing subsription When I call JSON-RPC method `Atoms.subscribe` with the same subscriber id as before Then I can observe an Error message saying that said subscriber Id already is in use

RLAU-1100 - Static Sharding for Maximum Throughput Testing

Story
Criteria

A quick and dirty version of static sharding for the testing maximum throughput.

  • Contributor: Martin

  • Component: core

SETUP As a node runner, I want to define my shard range So that can maximize the earning potential of my node.

Scenario 1: There is a valid shard range Given ‌that I have defined a shard range, That is smaller than 2^44, and that is bigger than 0, When ‌I start the node, Then ‌the Node will start successfully.

Scenario 2: There is a invalid shard range Given ‌that I have defined a shard range, That is not a integer, or that is bigger than 2^44, or that is smaller than 0, When ‌I start the node, Then ‌the Node will give me an error.

BROADCAST OF SHARD RANGE As a node runner, I want my peers to know the shard range that I'm serving So that they can send me relevant atoms

Scenario 1: Given ‌that I'm running a live node, When ‌join the network / periodically, Then ‌I want to include my shard range on peer discovery messages.

RECEIVAL OF SHARD RANGE As a node runner, I want my peers to be sending correct shard ranges to me, So that I can deliver relevant atoms to them.

Scenario 1: Peers are sending valid shard ranges Given ‌that I am running a node, When ‌a peer sends me a shard range, That is smaller than 2^44, and that is bigger than 0, Then ‌I will continue talking to that node.

Scenario 3: Peers are sending valid shard ranges that are correct. Given ‌that I am running a node, When ‌a peer sends me a shard range, That is consistent with what I know about that node in my own ledger. Then ‌I will continue talking to that node.

RLAU-1119 - Application Layer: Get Tokens Balances for address

Story
Criteria

Add a Get Tokens Balances For Address feature to the application layer of the Swift client library.

  • Contributor: Alex

  • Component: swift library

As a library consumer I want to be able to use Application Layer Feature `Get Tokens Balances For Address` So that I can build a wallet which can update tokens balances

Scenario 0: Get Tokens Balance

Given API methods for Atom subscription for an address from Node When I call `Get Tokens Balances` for said address Then I see a map of balances per token for said address

Scenario 1: Same token balance from two Atom arrays with different ordering

Given Two arrays of the same Atoms but with different ordering When I calculated the token Balance for based on both arrays Then I see that they result in the same balance.

Scenario 2: Increase Balance of existing Token

Given an observable of Token Balances for an address When I receive more tokens of a type I already own Then I see that my balances updates

Scenario 3: Decrease Balance of existing Token

Given an observable of Token Balances for an address When I spend tokens of a type I already own Then I see that my balances updates

Scenario 4: Update Tokens Balance when receiving a new Token Type

Given an observable of Token Balances for an address When I receive tokens of a new token type Then I see that my balances updates

RLAU-1191 - Settings screens for editing pin, address and invoice name

Story
Criteria

Add a Settings screen to the POS (Point of Sale) Android application.

  • Contributor: Marc

  • Component: payment card demo

As a POS operator I want a settings screen So that important information can only be edited if necessary by authorised personel

Scenario:Settings is opened, master pin is asked

Given POS app is launched and has been setup When when user navigates to the settings screen Then user is asked to input a master pin

Scenario: Master pin is asked and correctly input

Given user is asked to input his master pin When when user inputs correct pin Then the next action for the app, whether this is to navigate to the next screen or to confirm changes successfully happens

Scenario: Master pin is asked and incorrectly input

Given user is asked to input his master pin When when user inputs incorrect pin Then user is informed that it was an incorrect pin

Scenario: Changing Master pin

Given master pin has to change When when user navigates to do this Then the master pin is successfully changed

Scenario: Changing business name

Given business name has to change When when user navigates to do this Then the business name is successfully changed

Scenario: Changing payment address

Given address has to change When when user navigates to do this Then the payment address is successfully changed

RLAU-1308 - Make Swift lib repository public

Story
Criteria

Make the Swift client library available to the public in Radix's GitHub repository.

  • Contributor: Alex

  • Component: swift library

Scenario 1: README contains brief Getting Started "teaser"

Given that I have access to the Swift lib repo When I read its README Then I see a "Getting started Teaser" section listing the coming Application Layer APIs, such as `createToken`, `transferToken` and `getTokenBalances`