Browse Source

Merge pull request #1125 from luizmineo/master

Redstone.dart: Update to remove nginx
Hamilton Turner 10 years ago
parent
commit
272aced43b

+ 1 - 0
frameworks/Dart/dart-redstone/.gitignore

@@ -1 +1,2 @@
 packages/*
+.pub

+ 5 - 5
frameworks/Dart/dart-redstone/README.md

@@ -4,15 +4,15 @@ This test adds [Redstone.dart](http://redstonedart.org), a microframework for Da
 
 ## Versions
 
-* [Dart SDK version >=1.3.0](https://launchpad.net/~hachre/+archive/dart)
+* [Dart SDK version >=1.7.0](http://www.dartlang.org/)
 * [Dart args version 0.10.0+2](http://pub.dartlang.org/packages/args)
 * [Dart crypto version 0.9.0](http://pub.dartlang.org/packages/crypto)
 * [Dart mustache version 0.1.8](http://pub.dartlang.org/packages/mustache)
-* [Dart mongo_dart version 0.1.42](http://pub.dartlang.org/packages/mongo_dart)
+* [Dart mongo_dart version 0.1.44](http://pub.dartlang.org/packages/mongo_dart)
 * [Dart postgresql version 0.2.14](http://pub.dartlang.org/packages/postgresql)
-* [Dart redstone version 0.5.11](http://pub.dartlang.org/packages/redstone)
-* [Dart yaml version 0.9.0](http://pub.dartlang.org/packages/yaml)
-* [Dart redstone_mapper version 0.1.4](http://pub.dartlang.org/packages/redstone_mapper)
+* [Dart redstone version 0.5.18](http://pub.dartlang.org/packages/redstone)
+* [Dart yaml version 2.0.1+1](http://pub.dartlang.org/packages/yaml)
+* [Dart redstone_mapper version 0.1.9](http://pub.dartlang.org/packages/redstone_mapper)
 * [Dart redstone_mapper_mongo version 0.1.1+1](http://pub.dartlang.org/packages/redstone_mapper_mongo)
 * [Dart redstone_mapper_pg version 0.1.1](http://pub.dartlang.org/packages/redstone_mapper_pg)
 

+ 2 - 2
frameworks/Dart/dart-redstone/benchmark_config

@@ -17,7 +17,7 @@
       "language": "Dart",
       "orm": "Micro",
       "platform": "Dart",
-      "webserver": "nginx",
+      "webserver": "None",
       "os": "Linux",
       "database_os": "Linux",
       "display_name": "redstone-postgresql",
@@ -38,7 +38,7 @@
       "language": "Dart",
       "orm": "Micro",
       "platform": "Dart",
-      "webserver": "nginx",
+      "webserver": "None",
       "os": "Linux",
       "database_os": "Linux",
       "display_name": "redstone-mongodb",

+ 1 - 1
frameworks/Dart/dart-redstone/install.sh

@@ -1,3 +1,3 @@
 #!/bin/bash
 
-fw_depends dart nginx
+fw_depends dart

+ 1 - 1
frameworks/Dart/dart-redstone/postgresql.yaml

@@ -1,4 +1,4 @@
-host: tfbdata
+host: localhost
 port: 5432
 user: benchmarkdbuser
 password: benchmarkdbpass

+ 5 - 5
frameworks/Dart/dart-redstone/pubspec.yaml

@@ -1,15 +1,15 @@
 name: DartRedstoneBenchmark
 description: A benchmark of Redstone.dart, a server-side microframework for Dart
 environment:
-  sdk: ">=1.3.0 <2.0.0"
+  sdk: ">=1.7.0 <2.0.0"
 dependencies:
   args: 0.10.0+2
   crypto: 0.9.0
-  mongo_dart: 0.1.42
+  mongo_dart: 0.1.44
   mustache: 0.1.8
   postgresql: 0.2.14
-  redstone: 0.5.11
-  redstone_mapper: 0.1.4
+  redstone: 0.5.18
+  redstone_mapper: 0.1.9
   redstone_mapper_mongo: 0.1.1+1
   redstone_mapper_pg: 0.1.1
-  yaml: 0.9.0
+  yaml: 2.0.1+1

+ 28 - 2
frameworks/Dart/dart-redstone/server.dart

@@ -1,5 +1,6 @@
 import "dart:core";
 import "dart:io";
+import "dart:isolate";
 import 'dart:async' show Future;
 import 'dart:math' show Random;
 import "package:redstone/server.dart" as app;
@@ -210,10 +211,33 @@ main(List<String> args) {
   parser.addOption('address', abbr: 'a', defaultsTo: '0.0.0.0');
   parser.addOption('port', abbr: 'p', defaultsTo: '8080');
   parser.addOption('dbconnections', abbr: 'd', defaultsTo: '256');
+  parser.addOption('isolates', abbr: 'i', defaultsTo: '1');
   
   var arguments = parser.parse(args);
-  var dbConnections = int.parse(arguments["dbconnections"]);
+  var isolates = int.parse(arguments['isolates']);
+  var dbConnections = int.parse(arguments['dbconnections']) ~/ isolates;
+
+  ServerSocket.bind(arguments['address'], int.parse(arguments['port']))
+      .then((server) {
+        var ref = server.reference;
+        for (int i = 1; i < isolates; i++) {
+          Isolate.spawn(startInIsolate, [ref, dbConnections]);
+        }
+        _startServer(server, dbConnections);
+      });
   
+}
+
+void startInIsolate(args) {
+  var ref = args[0];
+  var dbConnections = args[1];
+  ref.create().then((server) {
+    _startServer(server, dbConnections);
+  });
+}
+
+_startServer(serverSocket, dbConnections) {
+
   MongoDbManager mongoDbManager;
   PostgreSqlManager pgSqlManager;
   mustache.Template fortunesTemplate;
@@ -255,9 +279,11 @@ main(List<String> args) {
     app.addPlugin(getMapperPlugin());
     
     //start the server
-    app.start(address: arguments["address"], port: int.parse(arguments["port"]));
+    var server = new HttpServer.listenOn(serverSocket);
+    app.serveRequests(server);
     
   });
+
 }
 
 _parseQueriesParam(param) {

+ 1 - 45
frameworks/Dart/dart-redstone/setup.py

@@ -3,7 +3,6 @@ import sys
 import setup_util
 import os
 
-
 def start(args, logfile, errfile):
   setup_util.replace_text('dart-redstone/postgresql.yaml', 'host: .*', 'host: ' + args.database_host)
   setup_util.replace_text('dart-redstone/mongodb.yaml', 'host: .*', 'host: ' + args.database_host)
@@ -15,55 +14,12 @@ def start(args, logfile, errfile):
     #
     # start dart servers
     #
-    for port in range(9001, 9001 + args.max_threads):
-      subprocess.Popen('dart server.dart -a 127.0.0.1 -p ' + str(port) + ' -d ' + str(args.max_concurrency / args.max_threads), shell=True, cwd='dart-redstone', stderr=errfile, stdout=logfile)
-    #
-    # create nginx configuration
-    #
-    conf = []
-    conf.append('worker_processes ' + str(args.max_threads) + ';')
-    conf.append('error_log /dev/null error;')
-    conf.append('events {')
-    conf.append('    worker_connections 1024;')
-    conf.append('}')
-    conf.append('http {')
-    conf.append('    access_log off;')
-    conf.append('    include /usr/local/nginx/conf/mime.types;')
-    conf.append('    default_type application/octet-stream;')
-    conf.append('    sendfile on;')
-    conf.append('    upstream dart_cluster {')
-    for port in range(9001, 9001 + args.max_threads):
-      conf.append('        server 127.0.0.1:' + str(port) + ';')
-    conf.append('        keepalive ' + str(args.max_concurrency / args.max_threads) + ';')
-    conf.append('    }')
-    conf.append('    server {')
-    conf.append('        listen 8080;')
-    conf.append('        location / {')
-    conf.append('            proxy_pass http://dart_cluster;')
-    conf.append('            proxy_http_version 1.1;')
-    conf.append('            proxy_set_header Connection "";')
-    conf.append('        }')
-    conf.append('    }')
-    conf.append('}')
-    #
-    # write nginx configuration to disk
-    #
-    with open('dart-redstone/nginx.conf', 'w') as f:
-      f.write('\n'.join(conf))
-    #
-    # start nginx
-    #
-    subprocess.Popen('sudo /usr/local/nginx/sbin/nginx -c $TROOT/nginx.conf', shell=True, cwd='dart-redstone', stderr=errfile, stdout=logfile);
+    subprocess.Popen('dart server.dart -a 0.0.0.0 -p 8080 -d ' + str(args.max_concurrency) + ' -i ' + str(args.max_threads), shell=True, cwd='dart-redstone', stderr=errfile, stdout=logfile)
     return 0
   except subprocess.CalledProcessError:
     return 1
 
 def stop(logfile, errfile):
-  #
-  # stop nginx
-  #
-  subprocess.check_call('sudo /usr/local/nginx/sbin/nginx -c $TROOT/nginx.conf -s stop', shell=True, cwd='dart-redstone', stderr=errfile, stdout=logfile)
-  os.remove('dart-redstone/nginx.conf')
   #
   # stop dart servers
   #

+ 5 - 0
frameworks/Dart/dart-redstone/source_code

@@ -0,0 +1,5 @@
+./dart-redstone/fortunes.mustache
+./dart-redstone/server.dart
+./dart-redstone/postgresql.yaml
+./dart-redstone/mongodb.yaml
+./dart-redstone/pubspec.yaml