Jelajahi Sumber

Add Adobe CFML Engine and re-org folders (#6337)

* Add Adobe CF Engine and re-org folders

* Remove debugging
Brad Wood 4 tahun lalu
induk
melakukan
73202caf85

+ 46 - 0
frameworks/CFML/CFML/README.md

@@ -0,0 +1,46 @@
+# CFML Lucee Benchmarking Test
+
+### Test Type Implementation Source Code
+
+* [JSON](src/json.cfm)
+* [PLAINTEXT](src/plaintext.cfm)
+* [DB](src/db.cfm)
+* [QUERY](src/query.cfm)
+* [CACHED QUERY](src/cached_query.cfm)
+* [UPDATE](src/update.cfm)
+* [FORTUNES](src/fortunes.cfm)
+
+## Important Libraries
+The tests were run with:
+* [CommandBox](https://commandbox.ortusbooks.com/)
+* [ortussolutions/commandbox Docker image](https://hub.docker.com/r/ortussolutions/commandbox/)
+* [Lucee Server](https://www.lucee.org/)
+
+## Test URLs
+### JSON
+
+http://localhost:8080/json.cfm
+
+### PLAINTEXT
+
+http://localhost:8080/plaintext.cfm
+
+### DB
+
+http://localhost:8080/db.cfm
+
+### QUERY
+
+http://localhost:8080/query.cfm?queries=
+
+### CACHED QUERY
+
+http://localhost:8080/cached_query.cfm?queries=
+
+### UPDATE
+
+http://localhost:8080/update.cfm?queries=
+
+### FORTUNES
+
+http://localhost:8080/fortunes.cfm

+ 53 - 0
frameworks/CFML/CFML/benchmark_config.json

@@ -0,0 +1,53 @@
+{
+  "framework": "cfml",
+  "tests": [
+    {
+      "default": {
+        "json_url": "/json.cfm",
+        "db_url": "/db.cfm",
+        "query_url":"/queries.cfm?queries=",
+        "fortune_url": "/fortunes.cfm",
+        "plaintext_url": "/plaintext.cfm",
+        "update_url": "/updates.cfm?queries=",
+        "port": 8080,
+        "approach": "Realistic",
+        "classification": "Platform",
+        "database": "Postgres",
+        "framework": "None",
+        "language": "CFML",
+        "flavor": "None",
+        "orm": "raw",
+        "platform": "None",
+        "webserver": "None",
+        "os": "Linux",
+        "database_os": "Linux",
+        "display_name": "cfml-lucee",
+        "notes": "Lucee Server",
+        "versus": "None"
+      },
+      "adobe": {
+        "json_url": "/json.cfm",
+        "db_url": "/db.cfm",
+        "query_url":"/queries.cfm?queries=",
+        "fortune_url": "/fortunes.cfm",
+        "plaintext_url": "/plaintext.cfm",
+        "update_url": "/updates.cfm?queries=",
+        "port": 8080,
+        "approach": "Realistic",
+        "classification": "Platform",
+        "database": "Postgres",
+        "framework": "None",
+        "language": "CFML",
+        "flavor": "None",
+        "orm": "raw",
+        "platform": "None",
+        "webserver": "None",
+        "os": "Linux",
+        "database_os": "Linux",
+        "display_name": "cfml-adobe",
+        "notes": "Adobe ColdFusion",
+        "versus": "None"
+      }
+    }
+  ]
+}

+ 14 - 0
frameworks/CFML/CFML/cfml-adobe.dockerfile

@@ -0,0 +1,14 @@
+FROM ortussolutions/commandbox:3.2.1
+
+COPY ./src/server-adobe.json /app/server.json
+COPY ./src/.cfconfig.json /app/.cfconfig.json
+
+RUN box install commandbox-cfconfig --verbose --force
+
+RUN ${BUILD_DIR}/util/warmup-server.sh
+
+RUN export FINALIZE_STARTUP=true;$BUILD_DIR/run.sh;unset FINALIZE_STARTUP
+
+EXPOSE 8080
+
+COPY ./src /app/

+ 14 - 0
frameworks/CFML/CFML/cfml.dockerfile

@@ -0,0 +1,14 @@
+FROM ortussolutions/commandbox:3.2.1
+
+COPY ./src/server-lucee.json /app/server.json
+COPY ./src/.cfconfig.json /app/.cfconfig.json
+
+RUN box install commandbox-cfconfig --verbose --force
+
+RUN ${BUILD_DIR}/util/warmup-server.sh
+
+RUN export FINALIZE_STARTUP=true;$BUILD_DIR/run.sh;unset FINALIZE_STARTUP
+
+EXPOSE 8080
+
+COPY ./src /app/

+ 14 - 0
frameworks/CFML/CFML/src/.cfconfig.json

@@ -0,0 +1,14 @@
+{
+    "datasources":{
+        "world":{
+            "database":"hello_world",
+            "dbdriver":"PostgreSQL",
+            "host":"tfb-database",
+            "password":"benchmarkdbpass",
+            "port":"5432",
+            "username":"benchmarkdbuser"
+        }
+    },
+    "inspectTemplate":"never",
+    "maxCFThreads":"512"
+}

+ 9 - 0
frameworks/CFML/CFML/src/db.cfm

@@ -0,0 +1,9 @@
+<cfsetting enablecfoutputonly=true>
+<cfheader name="Server" value="cfml-lucee">
+<cfheader name="Content-Type" value="application/json">
+<cfquery name="qry" datasource="world">
+    SELECT id, randomNumber
+    FROM World
+    WHERE id = <cfqueryparam value="#randRange( 1, 10000 )#" cfsqltype="integer">
+</cfquery>
+<cfoutput>#serializeJSON( qry.getRow( 1 ) )#</cfoutput>

+ 13 - 0
frameworks/CFML/CFML/src/fortunes.cfm

@@ -0,0 +1,13 @@
+<cfsetting enablecfoutputonly=true>
+<cfheader name="Server" value="cfml-lucee">
+<cfheader name="Content-Type" value="text/html; charset=utf-8">
+<cfquery name="qry" datasource="world">
+    SELECT id, message
+    FROM Fortune
+</cfquery>
+<cfset qry.addRow( { 'id' : 0, 'message' : 'Additional fortune added at request time.' } )>
+<cfset qry = qry.sort( (a,b)=>compareNoCase(a.message,b.message) )>
+<cfoutput><!DOCTYPE html><html><head><title>Fortunes</title></head><body><table><tr><th>id</th><th>message</th></tr>
+<cfloop query="#qry#"><tr><td>#qry.id#</td><td>#htmlEditFormat( qry.message )#</td></tr></cfloop>
+</table></body></html>
+</cfoutput>

+ 4 - 0
frameworks/CFML/CFML/src/json.cfm

@@ -0,0 +1,4 @@
+<cfsetting enablecfoutputonly=true>
+<cfheader name="Server" value="cfml-lucee">
+<cfheader name="Content-Type" value="application/json">
+<cfoutput>#serializeJSON( { 'message' : 'Hello, World!' } )#</cfoutput>

+ 3 - 0
frameworks/CFML/CFML/src/plaintext.cfm

@@ -0,0 +1,3 @@
+<cfheader name="Server" value="cfml-lucee">
+<cfheader name="Content-Type" value="text/plain">
+<cfcontent reset="true">Hello, World!

+ 20 - 0
frameworks/CFML/CFML/src/queries.cfm

@@ -0,0 +1,20 @@
+<cfsetting enablecfoutputonly=true>
+<cfparam name="url.queries" default="1">
+<cfset url.queries = val( url.queries )>
+<cfif url.queries gt 500 >
+    <cfset url.queries = 500>
+<cfelseif url.queries lt 1 >
+    <cfset url.queries = 1>
+</cfif>
+<cfheader name="Server" value="cfml-lucee">
+<cfheader name="Content-Type" value="application/json">
+<cfset results = []>
+<cfloop from="1" to="#url.queries#" index="i">
+    <cfquery name="qry" datasource="world">
+        SELECT id, randomNumber
+        FROM World
+        WHERE id = <cfqueryparam value="#randRange( 1, 10000 )#" cfsqltype="integer">
+    </cfquery>
+    <cfset results.append( qry.getRow( 1 ) )>
+</cfloop>
+<cfoutput>#serializeJSON( results )#</cfoutput>

+ 9 - 0
frameworks/CFML/CFML/src/server-adobe.json

@@ -0,0 +1,9 @@
+{
+    "profile":"none",
+    "web":{
+        "maxRequests":512
+    },
+    "app":{
+        "cfengine":"adobe@2018"
+    }
+}

+ 9 - 0
frameworks/CFML/CFML/src/server-lucee.json

@@ -0,0 +1,9 @@
+{
+    "profile" : "none",
+    "web" : {
+        "maxRequests" : 512
+    },
+    "app" : {
+        "cfengine" : "[email protected]"
+    }
+}

+ 31 - 0
frameworks/CFML/CFML/src/updates.cfm

@@ -0,0 +1,31 @@
+<cfsetting enablecfoutputonly=true>
+<cfparam name="url.queries" default="1">
+<cfset url.queries = val( url.queries )>
+<cfif url.queries gt 500 >
+    <cfset url.queries = 500>
+<cfelseif url.queries lt 1 >
+    <cfset url.queries = 1>
+</cfif>
+<cfheader name="Server" value="cfml-lucee">
+<cfheader name="Content-Type" value="application/json">
+<cfset results = []>
+<cfloop from="1" to="#url.queries#" index="i">
+    <cfquery name="qry" datasource="world">
+        SELECT id, randomNumber
+        FROM World
+        WHERE id = <cfqueryparam value="#randRange( 1, 10000 )#" cfsqltype="integer">
+    </cfquery>
+    <cfset results.append( { 'id' : qry.id, 'randomNumber' : randRange( 1, 1000 ) } )>
+</cfloop>
+<cfquery datasource="world">
+    update World as w set
+        randomNumber = w2.randomNumber
+    from (values
+        #results.reduce( (acc,r)=>{
+            acc = acc.listAppend( "(#val( r.id )#, #val( r.randomNumber )#)" );
+            return acc;
+         }, '')#
+        ) as w2(id,randomNumber)
+    where w2.id = w.id;
+</cfquery>
+<cfoutput>#serializeJSON( results )#</cfoutput>