Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Final Ticket Update #73

Open
AirWinter opened this issue Apr 17, 2024 · 3 comments
Open

Final Ticket Update #73

AirWinter opened this issue Apr 17, 2024 · 3 comments

Comments

Repository owner deleted a comment from JopSchaap Apr 18, 2024
@AirWinter
Copy link
Collaborator Author

AirWinter commented Apr 19, 2024

Final Ticket Update

This is just a brief overview of our project, check out the README for more insights.

Project Features

  1. Fixed issue that prevented APKs from being opened on new versions of Android (14+)
  2. Built a voting system for FOC app
    • Pull-based gossiping
      - Triggered when opening the FreedomOfComputing app
      - Sends request to all your direct neighbours
      - Only respond with votes that you don't already have
      - Benchmarked the performance in terms of latency & message size
    • Push-based gossiping
      - Triggered when placing a vote, tries to inform others about that specific vote
      - Inform log(n) of your neighbours about this vote, where n is number of direct neighbours
      - Hot potato gossip with TTL set to 2, so neighbours relay it unless TTL is 0
      - Benchmarked the performance in terms of latency & message size
    • Persisting state by writing to .dat file
    • Signatures to verify votes
  3. Installation of APK to homescreen
    • APK automatically installed to homescreen once it passes a certain threshold (set to 100)
    • Manual installing APK to homescreen when they haven't passed the threshold

Documentation

The README contains most of our documentation, as it provides a developer onboarding guide explaining the main methods of the FreedomOfComputing App. It also contains a section which goes more in depth into the features that we implemented in this project, the key decisions we made and highlights some of the current limitations as well as potential future improvements. We also made sure to include detailed KDocs for all new and most existing methods. These comments cover parameters, return statements, and provide an overview of each method's functionality.

Testing and Coverage

The new classes with heavy logic that required testing were FOCVoteTracker and FOCSignedVote
class. For the FOCVoteTracker class, we reached 100% method coverage with 90% of lines covered
(The missing lines are just mainly console log statements used for debugging) and on
the FOCSignedVote class, we reached 100% method coverage and 100% line coverage.

Live Demo

For the live demo download this APK and follow these steps:

Steps:

  1. Install the APK
  2. Check that you're connected via the debug screen
  3. Open FreedomOfComputing
  4. This should do a pull request and should fetch all the votes you're behind
  5. Place votes on APK which should push to others, also have others place votes which should push to you
  6. Have one APK go over the net threshold of 100, this should automatically install it to the superapp home screen
  7. Long click on an APK that doesn't have enough votes for the threshold and install it to the home screen manually
  8. Have a working APK gossiped automatically
  9. Have a broken APK gossiped automatically

Recordings in case live demo doesn't work:
Demo Voting
Demo Downloading APK
Demo Torrenting APK

@pbhaskaran
Copy link
Collaborator

pbhaskaran commented Apr 19, 2024

Testing and coverage:
The new classes with heavy logic that required testing were FOCVoteTracker and FOCSignedVote
class. For the FOCVoteTracker class, we reached 100% method coverage with 90% of lines covered
(The missing lines are just mainly console log statements used for debugging) and on
the FOCSignedVote class, we reached 100% method coverage and 100% line coverage.

We've made sure to include detailed KDocs for all new and most existing methods. These documents
cover parameters, return statements, and provide an overview of each method's functionality.

@pbhaskaran
Copy link
Collaborator

pbhaskaran commented Apr 19, 2024

  1. Built a rating system for FOC app
    • Pull based gossiping
    • Push based gossiping
  2. Installation of apk to homescreen
    • Apk automatically installed to homescreen once apk passes a certain threshold
    • Install apk to homescreen with manual voting

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants