Team 1 Project Page
17-654: Analysis of Software Artifacts
18-841: Dependability Analysis of Middleware
|
PowerQuotes ApplicationTeam Members:
Task Allocation:
Baseline Application Description:
-
An application that will give real-time stock
information and on-demand stock trend analysis.
Configuration:
Third-party software, if any (databases):
Baseline Application Features:
- Clients can retrieve a list of available stocks from the server.
-
Clients will be able to select from the list of available stocks which stocks
they are interested in and save this information in a user profile, associated
with a user name.
- Clients will be able to retrieve a saved profile back
from the server.
- Stock price information will be displayed at the client
for each stock selected in the loaded profile and will be updated
periodically.
- Additional trending information will be displayed for a stock
when requested by the client.
Reliability Requirements:
- If a server crashes, it will restart automatically.
- If a server
crashes, the client will detect that the server has crashed and
automatically failover to another server within 1 minute.
- A client's
profile information will still be available if the client must failover to
another server.
- No incoming stock information will be dropped/lost if a
single server fails.
Real-Time Requirements:
- Stock update information should reach the client within 5 seconds after it
is received by the server.
- An operation to save or retrieve a profile
should complete within 30 seconds.
- An operation to request trending
information for a stock should be completed within 40 seconds.
Performance Requirements:
- The system will be able to service 15 concurrent clients.
- Each client
should be able to subscribe to up to 20 stocks at one time.
- The system will
be able to handle 5 concurrent requests for trending information.
Baseline Application
Interfaces
Javadoc Pages -
this is the initial draft of the interfaces (see the architecture diagram below
for the updated interfaces)
Scenarios/Interactions
- The first scenario implemented was the simple use case
where the user enters a name and list of stocks. This is then stored in
the database and can be retrieved.
Current Status
The following
requirements have been implemented:
The following requirement has been placed on hold (this
was discussed with Priya on 2/9 as a way to reduce the scope of the Baseline
application):
- Additional trending information will be displayed for a stock
when requested by the client.
Documentation
Test Scripts
Downloads
Fault-Tolerant Baseline Application
Scenarios/ Interactions
Current Status
The following
requirements have been implemented:
- If a server crashes, it will restart automatically.
- If a server
crashes, the client will detect that the server has crashed and
automatically failover to another server within 1 minute.
- A client's
profile information will still be available if the client must failover to
another server.
- No incoming stock information will be dropped/lost if a
single server fails.
Documentation
Test Scripts
- Test 1 - Start All
Servers from Replication Manager
- Test 2 - Replication
Manager restarts a server
- Test 3 - Transfer
stock cache from an existing server to a newly started server
- Test 4 - Client
failover
- Test 5 - Stock
Ticker server connection (reconnect to server)
Fault-Injection
- The fault injection is taking place from the Replication Manager.
-
The injection works by allowing a
user to inject faults in the following ways:
- select an individual server
to kill by selecting a hostname
- select kill all servers
- select kill Replication
Manager
- Faults are injected by:
-
set user to ksteppe
- ssh to the designated
machine
- poll for process that are
associated with our server processes
- kill -9 all identified
processes
- There is a static CrashFaultInjector class that is called by the
Replication Manager
Downloads
Real-Time Fault-Tolerant Baseline Application
Timing Measurements
Scenarios/Interactions
Current Status
- Application has been tested and average/worst-case timings analyzed
- Performance bottlenecks have been identified:
JBoss
startup times, server reference lookup, database transactions
- Plans have been made to cure these issues, which will smooth out the
timings and give us a degree of higher performance.
High-Performance Real-Time Fault-Tolerant Baseline Application
Timing Measurements (Active vs Caching vs Baseline)
Documentation
Current Status
- Baseline, background server caching, and active replication clients have
been implemented
- JBoss startup timing normalized
- Replication Manager timing issues (server initialization, etc) fixed
- For active replication, if at least one server is alive, fail-over times
are cut in half.
Scenarios/Interactions
Downloads
|
Directory |
Zip File |
Source Code |
|
|
Release Files |
|
|