Detailed steps to RUN and test this project available in following file
https://github.com/krkartick/MessageBoardServer/blob/master/README_To_Test.txt
Features of MessageBoardServerv1
POST uri:/<Topic> = Creates a <Topic>
POST uri:/<Topic> body <Message> = Posts a message on the <Topic>
GET uri:/<Topic> = Retrieves all posts on the <Topic>
DELETE uri:/<Topic> = Deletes the <Topic>
Features of MessageBoardServerv2
<All the features in MessageBoardServerv1>
+ Support concurrent HTTP POST using GoLang concurrency framework
+ Creates upto 1000 workers for concurrent processing
Check the WIKI Page for comparision on HTTP Performance
Project details:
Language Used : GoLang
Deployment : Docker Container
Database : MySQL
Client : Any REST API client.
Examples: Restlet Client - Chrome Extension
RESTful Stress - Chrome Extension - For performance Testing
Configuration
- MySQL Database available on IP address mentioned in file <RunDockerApp.sh>
- MySQL Schema and Table created as per <MySQL_DB_Structure.sql>
Prepare MessageBoardServer Application
- Compile the application using <MyBuild.sh>
- Update the MySQL DB IP address in <RunDockerApp.sh>
- Run the docker image using <RunDockerApp.sh>
Now, using the REST Api clients, Messages can be posted
Environment Details
Operating System:
kartick@KartickUbuntu:~$ cat /etc/*release*
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"
NAME="Ubuntu"
VERSION="16.04.3 LTS (Xenial Xerus)"
ID=ubuntuID_
LIKE=debian
PRETTY_NAME="Ubuntu 16.04.3 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
Docker Environment
kartick@KartickUbuntu:~$ docker version
Client: Version: 17.06.1-ce
API version: 1.30
Go version: go1.8.3
Git commit: 874a737
Built: Thu Aug 17 22:51:12 2017
OS/Arch: linux/amd64
Server: Version: 17.06.1-ce
API version: 1.30 (minimum version 1.12)
Go version: go1.8.3
Git commit: 874a737
Built: Thu Aug 17 22:50:04 2017
OS/Arch: linux/amd64
Experimental: false
MySQL:
kartick@KartickUbuntu:~$ mysql --version
mysql Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using EditLine wrapper
Useful References:
http://releases.ubuntu.com/16.04/ - Ubuntu 16.04.3 LTS (Xenial Xerus)
https://www.tecmint.com/network-between-guest-vm-and-host-virtualbox/ - How to Configure Network Between Guest VM and Host in Oracle VirtualBox
http://www.dasblinkenlichten.com/docker-networking-101/ - Das Blinken Lichten · Docker Networking 101 – The defaults
https://divan.github.io/posts/integration_testing/ - Integration testing in Go using Docker · divan's blog