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

bot: modularize HTTP server #1149

Closed
wants to merge 3 commits into from
Closed

Conversation

edvbld
Copy link
Member

@edvbld edvbld commented May 12, 2021

Hi all,

please review this patch that modularizes the bot HTTP server. The HTTP server featured by the bot runner is currently only used to process webhooks, but I have coming patches that extends it with other functionality. This refactoring make the bot runner start the actual server and then handlers can be configured in a configuration file. A minimal configuration file looks like:

{
    "scratch": {
        "path": "/tmp/skara/scratch"
    },
    "storage": {
        "path": "/tmp/skara/storage"
    },
    "runner": {
        "interval": "PT10S",
        "watchdog": "PT30M",
        "concurrency": 2
    },
    "log": {
        "console": {
            "level": "FINER"
        }
    },
    "http-server": {
        "port": 8080,
        "/api": {
            "type": "webhook"
        }
   }
}

Using the above configuration stored in config.json the bot runner can then be started as:

$ make bots
$ ./bots/bin/bin/skara-bots $PWD/config.json

The HTTP server can be then be queried using e.g. curl:

$ curl --verbose --request POST --data '{"foo": "bar"}'  http://localhost:8080/api
Note: Unnecessary use of -X or --request, POST is already inferred.
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 127.0.0.1:8080...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 8080 (#0)
> POST /api HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.68.0
> Accept: */*
> Content-Length: 14
> Content-Type: application/x-www-form-urlencoded
>
} [14 bytes data]
* upload completely sent off: 14 out of 14 bytes
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Wed, 12 May 2021 07:18:50 GMT
< Content-length: 2
<
{ [2 bytes data]
100    16  100     2  100    14     66    466 --:--:-- --:--:-- --:--:--   533
* Connection #0 to host localhost left intact
{}

I also updated the webhook handler to return 404 if the supplied data cannot be parsed as valid JSON.

Testing:

  • Tested manually on Linux x64

Thanks,
Erik


Progress

  • Change must not contain extraneous whitespace
  • Change must be properly reviewed

Reviewers

Reviewing

Using git

Checkout this PR locally:
$ git fetch https://git.openjdk.java.net/skara pull/1149/head:pull/1149
$ git checkout pull/1149

Update a local copy of the PR:
$ git checkout pull/1149
$ git pull https://git.openjdk.java.net/skara pull/1149/head

Using Skara CLI tools

Checkout this PR locally:
$ git pr checkout 1149

View PR using the GUI difftool:
$ git pr show -t 1149

Using diff file

Download this PR as a diff file:
https://git.openjdk.java.net/skara/pull/1149.diff

@bridgekeeper
Copy link

bridgekeeper bot commented May 12, 2021

👋 Welcome back ehelin! A progress list of the required criteria for merging this PR into master will be added to the body of your pull request. There are additional pull request commands available for use with this pull request.

@openjdk openjdk bot added the rfr label May 12, 2021
@mlbridge
Copy link

mlbridge bot commented May 12, 2021

Webrevs

edvbld and others added 2 commits May 12, 2021
Co-authored-by: Erik Joelsson <37597443+erikj79@users.noreply.github.com>
Co-authored-by: Erik Joelsson <37597443+erikj79@users.noreply.github.com>
@openjdk
Copy link

openjdk bot commented May 12, 2021

@edvbld This change now passes all automated pre-integration checks.

ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details.

🔍 One or more changes in this pull request modifies files in areas of the source code that often require two reviewers. Please consider if this is the case for this pull request, and if so, await a second reviewer to approve this pull request before you integrate it.

🌎 Applicable reviewers for one or more changes in this pull request are spread across multiple different time zones. Please consider waiting with integrating this pull request until it has been out for review for at least 24 hours to give all reviewers a chance to review the pull request.

After integration, the commit message for the final commit will be:

bot: modularize HTTP server

Reviewed-by: erikj

You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed.

At the time when this comment was updated there had been no new commits pushed to the master branch. If another commit should be pushed before you perform the /integrate command, your PR will be automatically rebased. If you prefer to avoid any potential automatic rebasing, please check the documentation for the /integrate command for further details.

➡️ To integrate this PR with the above commit message to the master branch, type /integrate in a new comment.

@openjdk openjdk bot added the ready label May 12, 2021
@edvbld
Copy link
Member Author

edvbld commented May 12, 2021

/integrate

@openjdk openjdk bot closed this May 12, 2021
@openjdk openjdk bot added integrated and removed ready rfr labels May 12, 2021
@openjdk
Copy link

openjdk bot commented May 12, 2021

@edvbld Pushed as commit 2e7c62d.

💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
2 participants