@Override
    public void execute() throws MojoExecutionException, MojoFailureException {
        if(skipTests || mavenTestSkip) {
            getLog().info("Skipping all Octave tests, because 'skipTests' is set to true.");
        } else {
            getLog().info("running Octave tests @" + url);
            try {
                final HttpClient httpclient = new DefaultHttpClient();
                final HttpGet httpget = new HttpGet(new URI(url.toString()));
                final HttpResponse response = httpclient.execute(httpget);
                final StatusLine statusLine = response.getStatusLine();
                getLog().debug(statusLine.toString());
                final HttpEntity entity = response.getEntity();
                if (entity != null) {
                    try (InputStream instream = entity.getContent())  {
                        final Result result = new Gson().fromJson(new InputStreamReader(instream), Result.class);
                        boolean failed = false;
                        for (final Test test: result.tests) {
                            getLog().info(" * name: " + test.name + ", success: " + test.success);
                            failed |= test.success;
                        }
                        if (failed && !mavenTestFailureIgnore) {
                            throw new MojoFailureException("Octave tests failed.");
                        } else if (failed && mavenTestFailureIgnore) {
                            getLog().warn("Octave test failures ignored, because 'maven.test.failure.ignore' is set to true.");
                        }
                    }
                }
            } catch (IOException | URISyntaxException e) {
                throw new MojoExecutionException("Error executing Octave tests: " + e.getMessage(), e);
            }
        }
    }