Browse Source

[java/play1] Remove Play1 (#9655)

Play1 is currently failing because downloading the framework fails:
https://tfb-status.techempower.com/unzip/results.2025-03-08-22-02-56-466.zip/results/20250302185309/play1/build/play1.log

The TechEmpower tests haven't been updated in 5 years, and the latest v1
release is from 3 years ago: https://www.playframework.com/releases
Petrik de Heus 5 months ago
parent
commit
52863957e5

+ 0 - 31
frameworks/Java/play1/README.md

@@ -1,31 +0,0 @@
-# Play 1 framework Benchmarking Test
-
-[Play 1 framework](https://www.playframework.com/) - the high velocity web framework for Java and Scala. This is the old version - it's not Play 2.
-
-### Test sources
-
-This is the list:
-
- * [Plaintext](app/controllers/Application.java#L24)
- * [JSON](app/controllers/Application.java#L28)
- * [DB](app/controllers/Application.java#L39)
- * [Queries](app/controllers/Application.java#L45)
-
-## Software Versions
-
-The tests were run with:
-
- * [Oracle Java 10](https://www.oracle.com/java/)
- * [MySQL 5.7](http://www.mysql.com/)
-
-Please check the versions in the install and build scripts of TFB project.
-
-## Test URLs
-
-All implementations use the same URLs.
-
- * Plaintext - `http://localhost:8080/plaintext`
- * JSON - `http://localhost:8080/json`
- * DB - `http://localhost:8080/db`
- * Queries - `http://localhost:8080/query?queries=`
-

+ 0 - 132
frameworks/Java/play1/app/controllers/Application.java

@@ -1,132 +0,0 @@
-package controllers;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ThreadLocalRandom;
-
-import models.World;
-import play.db.jpa.JPAPlugin;
-import play.jobs.Job;
-import play.libs.F.Promise;
-import play.mvc.Controller;
-
-public class Application extends Controller {
-
-	private static final int TEST_DATABASE_ROWS = 10000;
-
-	public static void index() {
-		render();
-	}
-
-	public static void hello() {
-		renderText("Hello, world!");
-	}
-
-	public static void json() {
-		Map<String, String> result = new HashMap<String, String>();
-		result.put("message", "Hello, World!");
-		renderJSON(result);
-	}
-
-	/**
-	 * this version is used in the tests. it is the simplest and fastest.
-	 * 
-	 * @param queries
-	 */
-	public static void dbSync() {
-		Long id = Long.valueOf(ThreadLocalRandom.current().nextInt(TEST_DATABASE_ROWS) + 1);
-		World result = World.findById(id);
-		renderJSON(result);
-	}
-
-    public static void dbQueries(int queries) {
-		if (queries == 0) {
-			queries = 1;
-		} else if (queries > 500) {
-			queries = 500;
-        }
-		final List<World> worlds = new ArrayList<World>();
-		for (int i = 0; i < queries; ++i) {
-			Long id = Long.valueOf(ThreadLocalRandom.current().nextInt(TEST_DATABASE_ROWS) + 1);
-			World result = World.findById(id);
-			worlds.add(result);
-		}
-		renderJSON(worlds);
-    }
-
-	@play.db.jpa.NoTransaction
-	public static void setup() {
-		JPAPlugin plugin = play.Play.plugin(JPAPlugin.class);
-		plugin.startTx(true);
-
-		// clean out the old
-		World.deleteAll();
-		System.out.println("DELETED");
-		// in with the new
-		for (long i = 0; i <= TEST_DATABASE_ROWS; i++) {
-			int randomNumber = ThreadLocalRandom.current().nextInt(TEST_DATABASE_ROWS) + 1;
-			new World(i, randomNumber).save();
-			if (i % 100 == 0) {
-
-				World.em().flush();
-				World.em().clear();
-				System.out.println("FLUSHED : " + i + "/" + TEST_DATABASE_ROWS);
-
-			}
-		}
-		System.out.println("ADDED");
-		plugin.closeTx(false);
-	}
-
-	/**
-	 * note this is method is much slower than the synchronous version
-	 */
-	public static void dbAsyncEachQuery(int queries)
-			throws InterruptedException, ExecutionException {
-		if (queries == 0)
-			queries = 1;
-		final int queryCount = queries;
-		List<Promise<World>> promises = new ArrayList<Promise<World>>();
-		for (int i = 0; i < queryCount; ++i) {
-			final Long id = Long
-					.valueOf(ThreadLocalRandom.current().nextInt(TEST_DATABASE_ROWS) + 1);
-			Job<World> job = new Job<World>() {
-				public World doJobWithResult() throws Exception {
-					World result = World.findById(id);
-					return result;
-				};
-			};
-			promises.add(job.now());
-		}
-		List<World> result = await(Promise.waitAll(promises));
-		renderJSON(result);
-	}
-
-	/**
-	 * note this is method is a bit slower than the synchronous version
-	 */
-	public static void dbAsyncAllQueries(int queries)
-			throws InterruptedException, ExecutionException {
-		if (queries == 0)
-			queries = 1;
-		final int queryCount = queries;
-		final List<World> worlds = new ArrayList<World>();
-		Job<List<World>> job = new Job<List<World>>() {
-			public java.util.List<World> doJobWithResult() throws Exception {
-				for (int i = 0; i < queryCount; ++i) {
-					Long id = Long
-							.valueOf(ThreadLocalRandom.current().nextInt(TEST_DATABASE_ROWS) + 1);
-					World result = World.findById(id);
-					worlds.add(result);
-				}
-				return worlds;
-			};
-		};
-		List<World> result = job.now().get();
-		renderJSON(result);
-	}
-
-}

+ 0 - 30
frameworks/Java/play1/app/models/World.java

@@ -1,30 +0,0 @@
-package models;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-
-import play.db.jpa.GenericModel;
-import play.db.jpa.Model;
-
-import com.google.gson.annotations.SerializedName;
-
-/**
- * use a generic model as we want to explicitly define the id
- * 
- * @author tom
- * 
- */
-@Entity
-public class World extends GenericModel {
-
-	public World(long i, long number) {
-		id = i;
-		randomNumber = number ;
-	}
-
-	@Id
-	public Long id;
-
-	public Long randomNumber;
-}

+ 0 - 8
frameworks/Java/play1/app/views/Application/index.html

@@ -1,8 +0,0 @@
-
-<ul>
-<li><a href="@{Application.db(queries:100)}">DB</a></li>
-<li><a href="@{Application.dbSync(queries:100)}">DB sync</a></li>
-<li><a href="@{Application.json}">JSON test</a></li>
-<li><a href="@{Application.setup}">populate db</a></li>
-</ul>
-

+ 0 - 19
frameworks/Java/play1/app/views/errors/404.html

@@ -1,19 +0,0 @@
-<!DOCTYPE html>
-
-<html>
-    <head>
-        <title>Not found</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=${_response_encoding}"/>    
-    </head>
-    <body>
-        #{if play.mode.name() == 'DEV'}
-            #{404 result /}
-        #{/if}
-        #{else}
-            <h1>Not found</h1>
-            <p>
-                ${result.message}
-            </p>
-        #{/else}
-    </body>
-</html>

+ 0 - 21
frameworks/Java/play1/app/views/errors/500.html

@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-
-<html>
-    <head>
-        <title>Application error</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=${_response_encoding}"/>	
-    </head>
-    <body>
-        #{if play.mode.name() == 'DEV'}
-            #{500 exception /}
-        #{/if}
-        #{else}
-            <h1>Oops, an error occured</h1>
-            #{if exception instanceof play.exceptions.PlayException}
-                <p>
-                    This exception has been logged with id <strong>${exception.id}</strong>.
-                </p>
-            #{/if}
-        #{/else}
-    </body>
-</html>

+ 0 - 16
frameworks/Java/play1/app/views/main.html

@@ -1,16 +0,0 @@
-<!DOCTYPE html>
-
-<html>
-    <head>
-        <title>#{get 'title' /}</title>
-        <meta charset="${_response_encoding}">
-        <link rel="stylesheet" media="screen" href="@{'/public/stylesheets/main.css'}">
-        #{get 'moreStyles' /}
-        <link rel="shortcut icon" type="image/png" href="@{'/public/images/favicon.png'}">
-        <script src="@{'/public/javascripts/jquery-1.6.4.min.js'}" type="text/javascript" charset="${_response_encoding}"></script>
-        #{get 'moreScripts' /}
-    </head>
-    <body>
-        #{doLayout /}
-    </body>
-</html>

+ 0 - 26
frameworks/Java/play1/benchmark_config.json

@@ -1,26 +0,0 @@
-{
-  "framework": "play1",
-  "tests": [{
-    "default": {
-      "json_url": "/json",
-      "plaintext_url": "/plaintext",
-      "db_url": "/db",
-      "query_url": "/query?queries=",
-      "port": 8080,
-      "approach": "Realistic",
-      "classification": "Fullstack",
-      "database": "MySQL",
-      "framework": "play1",
-      "language": "Java",
-      "flavor": "None",
-      "orm": "Full",
-      "platform": "Netty",
-      "webserver": "None",
-      "os": "Linux",
-      "database_os": "Linux",
-      "display_name": "play1",
-      "notes": "",
-      "versus": "netty"
-    }
-  }]
-}

+ 0 - 236
frameworks/Java/play1/conf/application.conf

@@ -1,236 +0,0 @@
-# This is the main configuration file for the application.
-# ~~~~~
-application.name=play-1.2.5
-
-# Application mode
-# ~~~~~
-# Set to dev to enable instant reloading and other development help.
-# Otherwise set to prod.
-application.mode=dev
-%prod.application.mode=prod
-
-# Secret key
-# ~~~~~
-# The secret key is used to secure cryptographics functions
-# If you deploy your application to several instances be sure to use the same key !
-application.secret=p7Abj8rpexZmmC8iPsY2PlXSo1xtHFhLKHRCHpE1ZqEgRU5TIHPcEbaryoj16vi8
-
-# i18n
-# ~~~~~
-# Define locales used by your application.
-# You can then place localized messages in conf/messages.{locale} files
-# application.langs=fr,en,ja
-
-# Date format
-# ~~~~~
-date.format=yyyy-MM-dd
-# date.format.fr=dd/MM/yyyy
-
-# Server configuration
-# ~~~~~
-# If you need to change the HTTP port, uncomment this (default is set to 9000)
-# http.port=9000
-
-#modified to match previous port on test 
-http.port=8080
-
-#
-# By default the server listen for HTTP on the wilcard address.
-# You can restrict this.
-# http.address=127.0.0.1
-#
-# Use this if you don't host your Play application at the root of the domain
-# you're serving it from. This parameter has no effect when deployed as a
-# war, because the path will be handled by the application server.
-# http.path=/
-
-# Session configuration
-# ~~~~~~~~~~~~~~~~~~~~~~
-# By default, session will be written to the transient PLAY_SESSION cookie.
-# The cookies are not secured by default, only set it to true
-# if you're serving your pages through https.
-# application.session.cookie=PLAY
-# application.session.maxAge=1h
-# application.session.secure=false
-
-# Session/Cookie sharing between subdomain
-# ~~~~~~~~~~~~~~~~~~~~~~
-# By default a cookie is only valid for a specific domain. By setting
-# application.defaultCookieDomain to '.example.com', the cookies
-# will be valid for all domains ending with '.example.com', ie:
-# foo.example.com and bar.example.com
-# application.defaultCookieDomain=.example.com
-
-# JVM configuration
-# ~~~~~
-# Define which port is used by JPDA when application is in debug mode (default is set to 8000)
-# jpda.port=8000
-#
-# Java source level => 1.5, 1.6 or 1.7 (experimental)
-# java.source=1.5
-
-# Log level
-# ~~~~~
-# Specify log level for your application.
-# If you want a very customized log, create a log4j.properties file in the conf directory
-# application.log=INFO
-#
-# More logging configuration
-# application.log.path=/log4j.properties
-# application.log.system.out=off
-
-# Database configuration
-# ~~~~~ 
-# Enable a database engine if needed.
-#
-# To quickly set up a development database, use either:
-#   - mem : for a transient in memory database (H2 in memory)
-#   - fs  : for a simple file written database (H2 file stored)
-# db=mem
-#
-# To connect to a local MySQL5 database, use:
-# db=mysql://user:pwd@host/database
-#
-# To connect to a local PostgreSQL9 database, use:
-# db=postgres://user:pwd@host/database
-#
-# If you need a full JDBC configuration use the following :
-# db.url=jdbc:postgresql:database_name
-# db.driver=org.postgresql.Driver
-# db.user=root
-# db.pass=secret
-#
-# Connections pool configuration :
-db.pool.timeout=1000
-db.pool.maxSize=30
-db.pool.minSize=10
-
-
-#
-# If you want to reuse an existing Datasource from your application server, use:
-# db=java:/comp/env/jdbc/myDatasource
-#
-# When using an existing Datasource, it's sometimes needed to destroy it when
-# the application is stopped. Depending on the datasource, you can define a
-# generic "destroy" method :
-# db.destroyMethod=close
-db.driver= com.mysql.jdbc.Driver
-db.url=jdbc:mysql://tfb-database:3306/hello_world?jdbcCompliantTruncation=false&elideSetAutoCommits=true&useLocalSessionState=true&cachePrepStmts=true&cacheCallableStmts=true&alwaysSendSetIsolation=false&prepStmtCacheSize=4096&cacheServerConfiguration=true&prepStmtCacheSqlLimit=2048&zeroDateTimeBehavior=convertToNull&traceProtocol=false&useUnbufferedInput=false&useReadAheadInput=false&maintainTimeStats=false&useServerPrepStmts&cacheRSMetadata=true&useSSL=false
-#db.url=jdbc:mysql://tfb-database:3306/hello_world
-db.user=benchmarkdbuser
-db.pass=benchmarkdbpass
-#db.jndiName=DefaultDS
-
-#db.default.driver= com.mysql.jdbc.Driver
-#db.default.url=jdbc:mysql://tfb-database:3306/hello_world?jdbcCompliantTruncation=false&elideSetAutoCommits=true&useLocalSessionState=true&cachePrepStmts=true&cacheCallableStmts=true&alwaysSendSetIsolation=false&prepStmtCacheSize=4096&cacheServerConfiguration=true&prepStmtCacheSqlLimit=2048&zeroDateTimeBehavior=convertToNull&traceProtocol=false&useUnbufferedInput=false&useReadAheadInput=false&maintainTimeStats=false&useServerPrepStmts&cacheRSMetadata=true
-#db.default.user=benchmarkdbuser
-#db.default.pass=benchmarkdbpass
-#db.default.jndiName=DefaultDS
-
-
-# JPA Configuration (Hibernate)
-# ~~~~~
-#
-# Specify the custom JPA dialect to use here (default to guess):
-# jpa.dialect=org.hibernate.dialect.PostgreSQLDialect
-#
-# Specify the ddl generation pattern to use. Set to none to disable it 
-# (default to update in DEV mode, and none in PROD mode):
-# jpa.ddl=update
-#
-# Debug SQL statements (logged using DEBUG level):
-# jpa.debugSQL=true
-#
-# You can even specify additional hibernate properties here:
-# hibernate.use_sql_comments=true
-# ...
-#
-# Store path for Blob content
-attachments.path=data/attachments
-
-# Memcached configuration
-# ~~~~~ 
-# Enable memcached if needed. Otherwise a local cache is used.
-# memcached=enabled
-#
-# Specify memcached host (default to 127.0.0.1:11211)
-# memcached.host=127.0.0.1:11211
-#
-# Or you can specify multiple host to build a distributed cache
-# memcached.1.host=127.0.0.1:11211
-# memcached.2.host=127.0.0.1:11212
-#
-# Use plain SASL to authenticate for memcached
-# memcached.user=
-# memcached.password=
-
-# HTTP Response headers control for static files
-# ~~~~~
-# Set the default max-age, telling the user's browser how long it should cache the page.
-# Default is 3600 (one hour). Set it to 0 to send no-cache.
-# This is only read in prod mode, in dev mode the cache is disabled.
-# http.cacheControl=3600
-
-# If enabled, Play will generate entity tags automatically and send a 304 when needed.
-# Default is true, set it to false to deactivate use of entity tags.
-# http.useETag=true
-
-# Custom mime types
-# mimetype.xpi=application/x-xpinstall
-
-# WS configuration
-# ~~~~~
-# Default engine is Async Http Client, uncomment to use
-# the JDK's internal implementation
-# webservice = urlfetch
-# If you need to set proxy params for WS requests
-# http.proxyHost = localhost
-# http.proxyPort = 3128
-# http.proxyUser = jojo
-# http.proxyPassword = jojo
-
-# Mail configuration
-# ~~~~~ 
-# Default is to use a mock Mailer
-mail.smtp=mock
-
-# Or, specify mail host configuration
-# mail.smtp.host=127.0.0.1
-# mail.smtp.user=admin
-# mail.smtp.pass=
-# mail.smtp.channel=ssl
-
-# Url-resolving in Jobs
-# ~~~~~~
-# When rendering templates with reverse-url-resoling (@@{..}) in Jobs (which do not have an inbound Http.Request),
-# ie if sending a HtmlMail, Play need to know which url your users use when accessing your app.
-# %test.application.baseUrl=http://localhost:9000/
-# %prod.application.baseUrl=http://www.yourdomain.com/
-
-# Jobs executor
-# ~~~~~~
-# Size of the Jobs pool
-# play.jobs.pool=10
-
-
-# Execution pool
-# ~~~~~
-# Default to 1 thread in DEV mode or (nb processors + 1) threads in PROD mode.
-# Try to keep a low as possible. 1 thread will serialize all requests (very useful for debugging purpose)
-# play.pool=3
-
-# Open file from errors pages
-# ~~~~~
-# If your text editor supports opening files by URL, Play! will
-# dynamically link error pages to files 
-#
-# Example, for textmate:
-# play.editor=txmt://open?url=file://%s&line=%s
-
-# Testing. Set up a custom configuration for test mode
-# ~~~~~
-#%test.module.cobertura=${play.path}/modules/cobertura
-%test.application.mode=dev
-%test.db.url=jdbc:h2:mem:play;MODE=MYSQL;LOCK_MODE=0
-%test.jpa.ddl=create
-%test.mail.smtp=mock

+ 0 - 4
frameworks/Java/play1/conf/dependencies.yml

@@ -1,4 +0,0 @@
-# Application dependencies
-
-require:
-    - play

+ 0 - 3
frameworks/Java/play1/conf/messages

@@ -1,3 +0,0 @@
-# You can specialize this file for each language.
-# For example, for French create a messages.fr file
-#

+ 0 - 15
frameworks/Java/play1/conf/routes

@@ -1,15 +0,0 @@
-# Routes
-# This file defines all application routes (Higher priority routes first)
-# ~~~~
-
-
-# Home page
-GET     /json                           Application.json
-GET     /db                             Application.dbSync
-GET     /query                          Application.dbQueries
-GET     /plaintext                      Application.hello
-GET     /db2                            Application.dbAsyncAllQueries
-GET     /db3                            Application.dbAsyncEachQuery
-GET     /setup                          Application.setup
-GET     /                               Application.index
-

+ 0 - 17
frameworks/Java/play1/config.toml

@@ -1,17 +0,0 @@
-[framework]
-name = "play1"
-
-[main]
-urls.plaintext = "/plaintext"
-urls.json = "/json"
-urls.db = "/db"
-urls.query = "/query?queries="
-approach = "Realistic"
-classification = "Fullstack"
-database = "MySQL"
-database_os = "Linux"
-os = "Linux"
-orm = "Full"
-platform = "Netty"
-webserver = "None"
-versus = "netty"

+ 0 - 13
frameworks/Java/play1/play1.dockerfile

@@ -1,13 +0,0 @@
-FROM openjdk:10-jdk
-WORKDIR /play1
-COPY app app
-COPY conf conf
-COPY public public
-COPY test test
-RUN wget -nv https://downloads.typesafe.com/play/1.5.2/play-1.5.2.zip
-RUN unzip -q play-1.5.2.zip
-RUN apt-get install -yqq python
-
-EXPOSE 8080
-
-CMD ["play-1.5.2/play", "run", "--%prod"]

BIN
frameworks/Java/play1/public/images/favicon.png


File diff suppressed because it is too large
+ 0 - 1
frameworks/Java/play1/public/javascripts/jquery-1.6.4.min.js


+ 0 - 0
frameworks/Java/play1/public/stylesheets/main.css


+ 0 - 7
frameworks/Java/play1/test/Application.test.html

@@ -1,7 +0,0 @@
-*{ You can use plain selenium command using the selenium tag }*
-
-#{selenium}
-    // Open the home page, and check that no error occured
-    open('/')
-    assertNotTitle('Application error')
-#{/selenium}

+ 0 - 17
frameworks/Java/play1/test/ApplicationTest.java

@@ -1,17 +0,0 @@
-import org.junit.*;
-import play.test.*;
-import play.mvc.*;
-import play.mvc.Http.*;
-import models.*;
-
-public class ApplicationTest extends FunctionalTest {
-
-    @Test
-    public void testThatIndexPageWorks() {
-        Response response = GET("/");
-        assertIsOk(response);
-        assertContentType("text/html", response);
-        assertCharset(play.Play.defaultWebEncoding, response);
-    }
-    
-}

+ 0 - 13
frameworks/Java/play1/test/BasicTest.java

@@ -1,13 +0,0 @@
-import org.junit.*;
-import java.util.*;
-import play.test.*;
-import models.*;
-
-public class BasicTest extends UnitTest {
-
-    @Test
-    public void aVeryImportantThingToTest() {
-        assertEquals(2, 1 + 1);
-    }
-
-}

+ 0 - 7
frameworks/Java/play1/test/data.yml

@@ -1,7 +0,0 @@
-# you describe your data using the YAML notation here
-# and then load them using Fixtures.load("data.yml")
-
-# User(bob):
-#   email: [email protected]
-#   password: secret
-#   fullname: Bob

Some files were not shown because too many files changed in this diff