Moved experiment to belatuk_rnd
This commit is contained in:
parent
630c527381
commit
c29c7b7049
33 changed files with 0 additions and 11492 deletions
|
@ -1 +0,0 @@
|
||||||
include: package:lints/recommended.yaml
|
|
|
@ -1,27 +0,0 @@
|
||||||
import 'package:angel3_container/mirrors.dart';
|
|
||||||
import 'package:angel3_framework/angel3_framework.dart';
|
|
||||||
import 'package:angel3_framework/http.dart';
|
|
||||||
import 'package:logging/logging.dart';
|
|
||||||
|
|
||||||
void main() async {
|
|
||||||
print("Starting up");
|
|
||||||
//Logger.root.onRecord.listen(print);
|
|
||||||
|
|
||||||
var app = Angel(logger: Logger('example'), reflector: MirrorsReflector());
|
|
||||||
var http = AngelHttp(app);
|
|
||||||
|
|
||||||
app.get("/", (req, res) => "Hello, world!");
|
|
||||||
|
|
||||||
// Simple fallback to throw a 404 on unknown paths.
|
|
||||||
/*
|
|
||||||
app.fallback((req, res) {
|
|
||||||
throw AngelHttpException.notFound(
|
|
||||||
message: 'Unknown path: "${req.uri?.path}"',
|
|
||||||
);
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
|
|
||||||
await http.startServer('localhost', 3000);
|
|
||||||
|
|
||||||
print("End");
|
|
||||||
}
|
|
|
@ -1,44 +0,0 @@
|
||||||
import 'dart:mirrors';
|
|
||||||
import 'package:example1/src/models.dart';
|
|
||||||
|
|
||||||
void main() {
|
|
||||||
final stopwatch = Stopwatch()..start();
|
|
||||||
|
|
||||||
var reflectedClass = reflect(Shape());
|
|
||||||
|
|
||||||
reflectedClass.invoke(#draw, []);
|
|
||||||
|
|
||||||
//reflectedClass.invoke(Symbol('draw'), []);
|
|
||||||
|
|
||||||
print('Reflection executed in ${stopwatch.elapsed.inMilliseconds} ms');
|
|
||||||
stopwatch.stop();
|
|
||||||
|
|
||||||
printAnnotationValue(String);
|
|
||||||
printAnnotationValue(Shape);
|
|
||||||
printAnnotationValue(Square);
|
|
||||||
}
|
|
||||||
|
|
||||||
class Shape {
|
|
||||||
void draw() => print("Draw Shape");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Person('Will', 'Tom')
|
|
||||||
class Square {
|
|
||||||
void greetHii() {
|
|
||||||
print("Hii Welcome to flutter agency");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void printAnnotationValue(final Type clazz) {
|
|
||||||
final DeclarationMirror clazzDeclaration = reflectClass(clazz);
|
|
||||||
final ClassMirror someAnnotationMirror = reflectClass(Person);
|
|
||||||
final annotationInstsanceMirror =
|
|
||||||
clazzDeclaration.metadata.where((d) => d.type == someAnnotationMirror);
|
|
||||||
if (annotationInstsanceMirror.isEmpty) {
|
|
||||||
print('No annotated class found');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
final someAnnotationInstance =
|
|
||||||
(annotationInstsanceMirror.first.reflectee as Person);
|
|
||||||
print(someAnnotationInstance.firstName);
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
class Person {
|
|
||||||
final String firstName;
|
|
||||||
final String lastName;
|
|
||||||
const Person(this.firstName, this.lastName);
|
|
||||||
}
|
|
|
@ -1,48 +0,0 @@
|
||||||
name: example1
|
|
||||||
version: 0.0.1
|
|
||||||
description: Example 1.
|
|
||||||
environment:
|
|
||||||
sdk: '>=2.18.0 <3.0.0'
|
|
||||||
dependencies:
|
|
||||||
angel3_container: ^7.0.0
|
|
||||||
angel3_http_exception: ^7.0.0
|
|
||||||
angel3_framework: ^7.0.0
|
|
||||||
angel3_model: ^7.0.0
|
|
||||||
angel3_route: ^7.0.0
|
|
||||||
angel3_mock_request: ^7.0.0
|
|
||||||
belatuk_merge_map: ^4.0.0
|
|
||||||
belatuk_combinator: ^4.0.0
|
|
||||||
belatuk_http_server: ^3.0.0
|
|
||||||
charcode: ^1.2.0
|
|
||||||
file: ^6.1.0
|
|
||||||
http_parser: ^4.0.0
|
|
||||||
http2: ^2.0.0
|
|
||||||
logging: ^1.0.0
|
|
||||||
matcher: ^0.12.10
|
|
||||||
meta: ^1.3.0
|
|
||||||
mime: ^1.0.0
|
|
||||||
path: ^1.8.0
|
|
||||||
quiver: ^3.0.1
|
|
||||||
recase: ^4.0.0
|
|
||||||
stack_trace: ^1.10.0
|
|
||||||
string_scanner: ^1.1.0
|
|
||||||
tuple: ^2.0.0
|
|
||||||
uuid: ^3.0.1
|
|
||||||
collection: ^1.15.0
|
|
||||||
dev_dependencies:
|
|
||||||
http: ^0.13.1
|
|
||||||
io: ^1.0.0
|
|
||||||
test: ^1.21.0
|
|
||||||
lints: ^2.0.0
|
|
||||||
# dependency_overrides:
|
|
||||||
# angel3_container:
|
|
||||||
# path: ../container/angel_container
|
|
||||||
# angel3_http_exception:
|
|
||||||
# path: ../http_exception
|
|
||||||
# angel3_model:
|
|
||||||
# path: ../model
|
|
||||||
# angel3_route:
|
|
||||||
# path: ../route
|
|
||||||
# angel3_mock_request:
|
|
||||||
# path: ../mock_request
|
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
include: package:lints/recommended.yaml
|
|
|
@ -1,46 +0,0 @@
|
||||||
import 'package:angel3_container/mirrors.dart';
|
|
||||||
import 'package:angel3_framework/angel3_framework.dart';
|
|
||||||
import 'package:angel3_framework/http.dart';
|
|
||||||
|
|
||||||
@Expose('/controller', method: 'GET')
|
|
||||||
class MyController extends Controller {
|
|
||||||
@Expose('/', method: 'GET')
|
|
||||||
Future<String> route1(RequestContext req, ResponseContext res) async {
|
|
||||||
return "My route";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Expose('/sales', middleware: [process1])
|
|
||||||
class SalesController extends Controller {
|
|
||||||
@Expose('/', middleware: [process2])
|
|
||||||
Future<String> route1(RequestContext req, ResponseContext res) async {
|
|
||||||
return "Sales route";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool process1(RequestContext req, ResponseContext res) {
|
|
||||||
res.write('Hello, ');
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool process2(RequestContext req, ResponseContext res) {
|
|
||||||
res.write('From Sales, ');
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void main() async {
|
|
||||||
// Using Mirror Reflector
|
|
||||||
var app = Angel(reflector: MirrorsReflector());
|
|
||||||
|
|
||||||
// My Controller
|
|
||||||
app.container.registerSingleton<MyController>(MyController());
|
|
||||||
await app.mountController<MyController>();
|
|
||||||
|
|
||||||
// Sales Controller
|
|
||||||
app.container.registerSingleton<SalesController>(SalesController());
|
|
||||||
await app.mountController<SalesController>();
|
|
||||||
|
|
||||||
var http = AngelHttp(app);
|
|
||||||
var server = await http.startServer('localhost', 3000);
|
|
||||||
print("Angel server listening at ${http.uri}");
|
|
||||||
}
|
|
|
@ -1,63 +0,0 @@
|
||||||
import 'package:angel3_container/mirrors.dart';
|
|
||||||
import 'package:angel3_framework/angel3_framework.dart';
|
|
||||||
import 'package:angel3_framework/http.dart';
|
|
||||||
|
|
||||||
class Todo extends Model {
|
|
||||||
String? text;
|
|
||||||
String? over;
|
|
||||||
|
|
||||||
Todo({this.text, this.over});
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
|
||||||
return {
|
|
||||||
'text': text,
|
|
||||||
'over': over,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Expose('/todo', method: 'GET')
|
|
||||||
class TodoController extends Controller {
|
|
||||||
@Expose('/')
|
|
||||||
Todo todo(Todo singleton) => singleton;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Expose('/controller', method: 'GET')
|
|
||||||
class MyController extends Controller {
|
|
||||||
@Expose('/', method: 'GET')
|
|
||||||
Future<String> route1(RequestContext req, ResponseContext res) async {
|
|
||||||
return "My route";
|
|
||||||
}
|
|
||||||
|
|
||||||
//Todo todo(Todo singleton) => singleton;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Expose('/sales', middleware: [process1])
|
|
||||||
class SalesController extends Controller {
|
|
||||||
@Expose('/', middleware: [process2])
|
|
||||||
Future<String> route1(RequestContext req, ResponseContext res) async {
|
|
||||||
return "Sales route";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool process1(RequestContext req, ResponseContext res) {
|
|
||||||
res.write('Hello, ');
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool process2(RequestContext req, ResponseContext res) {
|
|
||||||
res.write('From Sales, ');
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void main() async {
|
|
||||||
// Using Mirror Reflector
|
|
||||||
var app = Angel(reflector: MirrorsReflector());
|
|
||||||
|
|
||||||
await app.configure(MyController().configureServer);
|
|
||||||
await app.configure(SalesController().configureServer);
|
|
||||||
|
|
||||||
var http = AngelHttp(app);
|
|
||||||
var server = await http.startServer('localhost', 3000);
|
|
||||||
print("Angel server listening at ${http.uri}");
|
|
||||||
}
|
|
|
@ -1,72 +0,0 @@
|
||||||
import 'package:angel3_container_generator/angel3_container_generator.dart';
|
|
||||||
import 'package:angel3_framework/angel3_framework.dart';
|
|
||||||
import 'package:angel3_framework/http.dart';
|
|
||||||
|
|
||||||
import 'example3_controller.reflectable.dart';
|
|
||||||
|
|
||||||
@contained
|
|
||||||
@Expose('/controller', method: 'GET')
|
|
||||||
class MyController extends Controller {
|
|
||||||
@Expose('/')
|
|
||||||
Order order(Order singleton) => singleton;
|
|
||||||
|
|
||||||
//Todo todo(Todo singleton) => singleton;
|
|
||||||
}
|
|
||||||
|
|
||||||
class Todo extends Model {
|
|
||||||
String? text;
|
|
||||||
String? over;
|
|
||||||
|
|
||||||
Todo({this.text, this.over});
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
|
||||||
return {
|
|
||||||
'text': text,
|
|
||||||
'over': over,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class FoodItem {
|
|
||||||
final String name;
|
|
||||||
final num price;
|
|
||||||
final num qty;
|
|
||||||
|
|
||||||
FoodItem(this.name, this.price, this.qty);
|
|
||||||
}
|
|
||||||
|
|
||||||
class Order {
|
|
||||||
FoodItem item;
|
|
||||||
|
|
||||||
String? get name => item.name;
|
|
||||||
|
|
||||||
Order(this.item);
|
|
||||||
}
|
|
||||||
|
|
||||||
void main() async {
|
|
||||||
//var reflector = const GeneratedReflector();
|
|
||||||
//Container container = Container(reflector);
|
|
||||||
//container.registerSingleton<SalesController>(SalesController());
|
|
||||||
|
|
||||||
// Using GeneratedReflector
|
|
||||||
initializeReflectable();
|
|
||||||
var app = Angel(reflector: GeneratedReflector());
|
|
||||||
|
|
||||||
// Using MirrorReflector
|
|
||||||
//var app = Angel(reflector: MirrorsReflector());
|
|
||||||
//await app.configure(MyController().configureServer);
|
|
||||||
|
|
||||||
// My Controller
|
|
||||||
//app.container.registerSingleton<MyController>(MyController());
|
|
||||||
//await app.mountController<MyController>();
|
|
||||||
await app.configure(MyController().configureServer);
|
|
||||||
|
|
||||||
// Sales Controller
|
|
||||||
//app.container.registerSingleton<SalesController>(SalesController());
|
|
||||||
//await app.mountController<SalesController>();
|
|
||||||
|
|
||||||
var http = AngelHttp(app);
|
|
||||||
|
|
||||||
var server = await http.startServer('localhost', 3000);
|
|
||||||
print("Angel server listening at ${http.uri}");
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,44 +0,0 @@
|
||||||
import 'package:example2/src/models.dart';
|
|
||||||
|
|
||||||
void main() {
|
|
||||||
final stopwatch = Stopwatch()..start();
|
|
||||||
|
|
||||||
//var reflectedClass = reflect(Shape());
|
|
||||||
|
|
||||||
//reflectedClass.invoke(#draw, []);
|
|
||||||
|
|
||||||
//reflectedClass.invoke(Symbol('draw'), []);
|
|
||||||
|
|
||||||
print('Reflection executed in ${stopwatch.elapsed.inMilliseconds} ms');
|
|
||||||
stopwatch.stop();
|
|
||||||
|
|
||||||
//printAnnotationValue(String);
|
|
||||||
//printAnnotationValue(Shape);
|
|
||||||
//printAnnotationValue(Square);
|
|
||||||
}
|
|
||||||
|
|
||||||
class Shape {
|
|
||||||
void draw() => print("Draw Shape");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Person('Will', 'Tom')
|
|
||||||
class Square {
|
|
||||||
void greetHii() {
|
|
||||||
print("Hii Welcome to flutter agency");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
void printAnnotationValue(final Type clazz) {
|
|
||||||
final DeclarationMirror clazzDeclaration = reflectClass(clazz);
|
|
||||||
final ClassMirror someAnnotationMirror = reflectClass(Person);
|
|
||||||
final annotationInstsanceMirror =
|
|
||||||
clazzDeclaration.metadata.where((d) => d.type == someAnnotationMirror);
|
|
||||||
if (annotationInstsanceMirror.isEmpty) {
|
|
||||||
print('No annotated class found');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
final someAnnotationInstance =
|
|
||||||
(annotationInstsanceMirror.first.reflectee as Person);
|
|
||||||
print(someAnnotationInstance.firstName);
|
|
||||||
}
|
|
||||||
*/
|
|
|
@ -1,9 +0,0 @@
|
||||||
targets:
|
|
||||||
$default:
|
|
||||||
builders:
|
|
||||||
reflectable:
|
|
||||||
generate_for:
|
|
||||||
#- lib/**_controller.dart
|
|
||||||
- bin/**_controller.dart
|
|
||||||
options:
|
|
||||||
formatted: true
|
|
|
@ -1,15 +0,0 @@
|
||||||
import 'package:angel3_container_generator/angel3_container_generator.dart';
|
|
||||||
import 'package:angel3_framework/angel3_framework.dart';
|
|
||||||
|
|
||||||
@Expose('/hr')
|
|
||||||
class HrController extends Controller {
|
|
||||||
@Expose('/')
|
|
||||||
landingPage() => "Hello, world!";
|
|
||||||
}
|
|
||||||
|
|
||||||
@contained
|
|
||||||
class SalesController extends Controller {
|
|
||||||
landingPage() => "Hello, world!";
|
|
||||||
}
|
|
||||||
|
|
||||||
void main() {}
|
|
|
@ -1,5 +0,0 @@
|
||||||
class Person {
|
|
||||||
final String firstName;
|
|
||||||
final String lastName;
|
|
||||||
const Person(this.firstName, this.lastName);
|
|
||||||
}
|
|
|
@ -1,53 +0,0 @@
|
||||||
name: example2
|
|
||||||
version: 0.0.1
|
|
||||||
description: Example 2.
|
|
||||||
environment:
|
|
||||||
sdk: '>=3.0.0 <4.0.0'
|
|
||||||
dependencies:
|
|
||||||
angel3_container: ^7.1.0-beta.1
|
|
||||||
angel3_container_generator: ^7.1.0-beta.1
|
|
||||||
angel3_http_exception: ^7.0.0
|
|
||||||
angel3_framework: ^7.0.0
|
|
||||||
angel3_model: ^7.0.0
|
|
||||||
angel3_route: ^7.0.0
|
|
||||||
angel3_mock_request: ^7.0.0
|
|
||||||
belatuk_merge_map: ^4.0.0
|
|
||||||
belatuk_combinator: ^4.0.0
|
|
||||||
belatuk_http_server: ^3.0.0
|
|
||||||
charcode: ^1.2.0
|
|
||||||
file: ^6.1.0
|
|
||||||
http_parser: ^4.0.0
|
|
||||||
http2: ^2.0.0
|
|
||||||
logging: ^1.0.0
|
|
||||||
matcher: ^0.12.10
|
|
||||||
meta: ^1.3.0
|
|
||||||
mime: ^1.0.0
|
|
||||||
path: ^1.8.0
|
|
||||||
quiver: ^3.0.1
|
|
||||||
recase: ^4.0.0
|
|
||||||
stack_trace: ^1.10.0
|
|
||||||
string_scanner: ^1.1.0
|
|
||||||
tuple: ^2.0.0
|
|
||||||
uuid: ^3.0.1
|
|
||||||
collection: ^1.15.0
|
|
||||||
reflectable: ^4.0.2
|
|
||||||
dev_dependencies:
|
|
||||||
build_runner: ^2.1.2
|
|
||||||
http: ^0.13.1
|
|
||||||
io: ^1.0.0
|
|
||||||
test: ^1.21.0
|
|
||||||
lints: ^2.0.0
|
|
||||||
# dependency_overrides:
|
|
||||||
# angel3_container:
|
|
||||||
# path: ../../../packages/container/angel_container
|
|
||||||
# angel3_container_generator:
|
|
||||||
# path: ../../../packages/container/angel_container_generator
|
|
||||||
# angel3_framework:
|
|
||||||
# path: ../../../packages/framework
|
|
||||||
# angel3_model:
|
|
||||||
# path: ../model
|
|
||||||
# angel3_route:
|
|
||||||
# path: ../route
|
|
||||||
# angel3_mock_request:
|
|
||||||
# path: ../mock_request
|
|
||||||
|
|
|
@ -1,14 +0,0 @@
|
||||||
import 'package:angel3_container_generator/angel3_container_generator.dart';
|
|
||||||
import 'package:angel3_framework/angel3_framework.dart';
|
|
||||||
|
|
||||||
@Expose('/hr')
|
|
||||||
class HrController extends Controller {
|
|
||||||
@Expose('/')
|
|
||||||
landingPage() => "Hello, world!";
|
|
||||||
}
|
|
||||||
|
|
||||||
@contained
|
|
||||||
class SalesController extends Controller {
|
|
||||||
|
|
||||||
landingPage() => "Hello, world!";
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
Primary Authors
|
|
||||||
===============
|
|
||||||
|
|
||||||
* __[Thomas Hii](dukefirehawk.apps@gmail.com)__
|
|
||||||
|
|
||||||
The current main maintainer of the code base.
|
|
|
@ -1,29 +0,0 @@
|
||||||
BSD 3-Clause License
|
|
||||||
|
|
||||||
Copyright (c) 2021, dukefirehawk.com
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer in the documentation
|
|
||||||
and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
3. Neither the name of the copyright holder nor the names of its
|
|
||||||
contributors may be used to endorse or promote products derived from
|
|
||||||
this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
||||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
||||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
||||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
@ -1 +0,0 @@
|
||||||
include: package:lints/recommended.yaml
|
|
|
@ -1,93 +0,0 @@
|
||||||
import 'dart:io';
|
|
||||||
|
|
||||||
import 'package:mysql_client/mysql_client.dart';
|
|
||||||
import 'package:mysql1/mysql1.dart';
|
|
||||||
|
|
||||||
void main() async {
|
|
||||||
print("=== Start 'mysql1' driver test");
|
|
||||||
await testMySQL1Driver().catchError((error, stackTrace) {
|
|
||||||
print(error);
|
|
||||||
});
|
|
||||||
print("=== End test");
|
|
||||||
print(" ");
|
|
||||||
|
|
||||||
print("=== Start 'mysql_client' driver test");
|
|
||||||
await testMySQLClientDriver().catchError((error, stackTrace) {
|
|
||||||
print(error);
|
|
||||||
});
|
|
||||||
print("=== End test");
|
|
||||||
print(" ");
|
|
||||||
|
|
||||||
//sleep(Duration(seconds: 5));
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> testMySQLClientDriver() async {
|
|
||||||
var connection = await MySQLConnection.createConnection(
|
|
||||||
host: "localhost",
|
|
||||||
port: 3306,
|
|
||||||
databaseName: "orm_test",
|
|
||||||
userName: "test",
|
|
||||||
password: "test123",
|
|
||||||
secure: false);
|
|
||||||
await connection.connect(timeoutMs: 30000);
|
|
||||||
|
|
||||||
print(">Test Select All");
|
|
||||||
var result = await connection.execute("SELECT * from users");
|
|
||||||
print("Total records: ${result.rows.length}");
|
|
||||||
|
|
||||||
print(">Test Insert");
|
|
||||||
var params = {
|
|
||||||
"username": "test",
|
|
||||||
"password": "test123",
|
|
||||||
"email": "test@demo.com",
|
|
||||||
"updatedAt": DateTime.parse("1970-01-01 00:00:00")
|
|
||||||
};
|
|
||||||
|
|
||||||
result = await connection.execute(
|
|
||||||
"INSERT INTO users (username, password, email, updated_at) VALUES (:username, :password, :email, :updatedAt)",
|
|
||||||
params);
|
|
||||||
print("Last inserted ID: ${result.lastInsertID}");
|
|
||||||
|
|
||||||
print(">Test Select By ID");
|
|
||||||
result = await connection.execute(
|
|
||||||
"SELECT * from users where id=:id", {"id": result.lastInsertID.toInt()});
|
|
||||||
print("Read record: ${result.rows.first.assoc()}");
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> testMySQL1Driver() async {
|
|
||||||
var settings = ConnectionSettings(
|
|
||||||
host: 'localhost',
|
|
||||||
port: 3306,
|
|
||||||
db: 'orm_test',
|
|
||||||
user: 'test',
|
|
||||||
password: 'test123',
|
|
||||||
timeout: Duration(seconds: 60));
|
|
||||||
var connection = await MySqlConnection.connect(settings);
|
|
||||||
|
|
||||||
print(">Test Select All");
|
|
||||||
var result = await connection.query("SELECT * from users");
|
|
||||||
print("Total records: ${result.length}");
|
|
||||||
|
|
||||||
print(">Test Insert");
|
|
||||||
var params = [
|
|
||||||
"test",
|
|
||||||
"test123",
|
|
||||||
"test@demo.com",
|
|
||||||
DateTime.parse("1970-01-01 00:00:00").toUtc()
|
|
||||||
];
|
|
||||||
|
|
||||||
// DateTime.parse("1970-01-01 00:00:01").toUtc()
|
|
||||||
result = await connection.query(
|
|
||||||
"INSERT INTO users (username, password, email, updated_at) VALUES (?, ?, ?, ?)",
|
|
||||||
params);
|
|
||||||
print("Last inserted ID: ${result.insertId}");
|
|
||||||
|
|
||||||
print(">Test Select By ID");
|
|
||||||
result = await connection
|
|
||||||
.query("SELECT * from users where id=?", [result.insertId]);
|
|
||||||
print("Read record: ${result.first.values}");
|
|
||||||
|
|
||||||
var d = DateTime.parse("1970-01-01 00:00:00").toUtc();
|
|
||||||
print("Local time: ${d.toLocal()}");
|
|
||||||
}
|
|
|
@ -1,53 +0,0 @@
|
||||||
import 'dart:io';
|
|
||||||
|
|
||||||
import 'package:postgres/postgres.dart';
|
|
||||||
|
|
||||||
void main() async {
|
|
||||||
/*
|
|
||||||
* Granting permission in postgres
|
|
||||||
* grant all privileges on database orm_test to test;
|
|
||||||
* grant all privileges on sequence users_id_seq to test;
|
|
||||||
*/
|
|
||||||
print("=== Start 'postgres' driver test");
|
|
||||||
await testPgDriver().catchError((error, stackTrace) {
|
|
||||||
print(error);
|
|
||||||
});
|
|
||||||
print("=== End test");
|
|
||||||
print(" ");
|
|
||||||
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> testPgDriver() async {
|
|
||||||
var conn = PostgreSQLConnection('localhost', 5432, 'orm_test',
|
|
||||||
username: 'test', password: 'test123');
|
|
||||||
await conn.open();
|
|
||||||
|
|
||||||
print(">Test Select All");
|
|
||||||
var result = await conn.query("SELECT * from users");
|
|
||||||
print("Total records: ${result.length}");
|
|
||||||
for (var row in result) {
|
|
||||||
print(row[0]);
|
|
||||||
for (var element in row) {
|
|
||||||
print(element);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
print(">Test Insert");
|
|
||||||
var params = {
|
|
||||||
"username": "test",
|
|
||||||
"password": "test123",
|
|
||||||
"email": "test@demo.com",
|
|
||||||
"updatedAt": DateTime.parse("1970-01-01 00:00:00")
|
|
||||||
};
|
|
||||||
|
|
||||||
result = await conn.query(
|
|
||||||
"INSERT INTO users (username, password, email, updated_at) VALUES (@username, @password, @email, @updatedAt)",
|
|
||||||
substitutionValues: params);
|
|
||||||
//print("Last inserted ID: ${result.}");
|
|
||||||
|
|
||||||
//print(">Test Select By ID");
|
|
||||||
//result = await conn.query("SELECT * from users where id=@id",
|
|
||||||
// substitutionValues: {"id": result});
|
|
||||||
//print("Read record: ${result.length}");
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
name: performance_tool
|
|
||||||
version: 1.0.0
|
|
||||||
description: Angel3 performance testing tool
|
|
||||||
publish_to: none
|
|
||||||
environment:
|
|
||||||
sdk: '>=3.0.0 <4.0.0'
|
|
||||||
published_to: none
|
|
||||||
dependencies:
|
|
||||||
mysql1: ^0.20.0
|
|
||||||
mysql_client: ^0.0.24
|
|
||||||
postgres: ^2.4.1
|
|
||||||
postgres_pool: ^2.1.3
|
|
||||||
dev_dependencies:
|
|
||||||
lints: ^2.0.0
|
|
|
@ -1,6 +0,0 @@
|
||||||
Primary Authors
|
|
||||||
===============
|
|
||||||
|
|
||||||
* __[Thomas Hii](dukefirehawk.apps@gmail.com)__
|
|
||||||
|
|
||||||
The current main maintainer of the code base.
|
|
|
@ -1,29 +0,0 @@
|
||||||
BSD 3-Clause License
|
|
||||||
|
|
||||||
Copyright (c) 2021, dukefirehawk.com
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer in the documentation
|
|
||||||
and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
3. Neither the name of the copyright holder nor the names of its
|
|
||||||
contributors may be used to endorse or promote products derived from
|
|
||||||
this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
||||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
||||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
||||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
@ -1 +0,0 @@
|
||||||
include: package:lints/recommended.yaml
|
|
|
@ -1,22 +0,0 @@
|
||||||
import 'dart:isolate';
|
|
||||||
|
|
||||||
Future<void> runApp(var message) async {
|
|
||||||
var stopwatch = Stopwatch()..start();
|
|
||||||
|
|
||||||
// Do something
|
|
||||||
|
|
||||||
print('Execution($message) Time: ${stopwatch.elapsed.inMilliseconds}ms');
|
|
||||||
stopwatch.stop();
|
|
||||||
}
|
|
||||||
|
|
||||||
void main() async {
|
|
||||||
var concurrency = 6000;
|
|
||||||
|
|
||||||
for (var i = 0; i < concurrency; i++) {
|
|
||||||
Isolate.spawn(runApp, 'Instance_$i');
|
|
||||||
}
|
|
||||||
|
|
||||||
await Future.delayed(const Duration(seconds: 10));
|
|
||||||
|
|
||||||
//print("Exit");
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
name: performance_tool
|
|
||||||
version: 1.0.0
|
|
||||||
description: Angel3 performance testing tool
|
|
||||||
publish_to: none
|
|
||||||
environment:
|
|
||||||
sdk: '>=3.0.0 <4.0.0'
|
|
||||||
published_to: none
|
|
||||||
dependencies:
|
|
||||||
http: ^0.13.4
|
|
||||||
dev_dependencies:
|
|
||||||
lints: ^2.0.0
|
|
|
@ -1,6 +0,0 @@
|
||||||
Primary Authors
|
|
||||||
===============
|
|
||||||
|
|
||||||
* __[Thomas Hii](dukefirehawk.apps@gmail.com)__
|
|
||||||
|
|
||||||
The current main maintainer of the code base.
|
|
|
@ -1,29 +0,0 @@
|
||||||
BSD 3-Clause License
|
|
||||||
|
|
||||||
Copyright (c) 2021, dukefirehawk.com
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer in the documentation
|
|
||||||
and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
3. Neither the name of the copyright holder nor the names of its
|
|
||||||
contributors may be used to endorse or promote products derived from
|
|
||||||
this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
||||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
||||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
||||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
@ -1 +0,0 @@
|
||||||
include: package:lints/recommended.yaml
|
|
|
@ -1,104 +0,0 @@
|
||||||
import 'dart:isolate';
|
|
||||||
import 'package:http/http.dart' as http;
|
|
||||||
|
|
||||||
Future<void> fortunes(var message) async {
|
|
||||||
var stopwatch = Stopwatch()..start();
|
|
||||||
|
|
||||||
var url = Uri.http('localhost:8080', '/fortunes');
|
|
||||||
var response = await http.get(url);
|
|
||||||
print('Execution($message) Time: ${stopwatch.elapsed.inMilliseconds}ms');
|
|
||||||
stopwatch.stop();
|
|
||||||
|
|
||||||
if (response.statusCode == 200) {
|
|
||||||
print('Execution($message): success');
|
|
||||||
} else {
|
|
||||||
print('Execution($message): error');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> plaintext(var message) async {
|
|
||||||
var stopwatch = Stopwatch()..start();
|
|
||||||
|
|
||||||
var url = Uri.http('localhost:8080', '/plaintext');
|
|
||||||
var response = await http.get(url);
|
|
||||||
if (response.statusCode == 200) {
|
|
||||||
print('Execution($message): ${response.body}.');
|
|
||||||
} else {
|
|
||||||
print('Execution($message): error');
|
|
||||||
}
|
|
||||||
|
|
||||||
print('Execution($message) Time: ${stopwatch.elapsed.inMilliseconds}ms');
|
|
||||||
stopwatch.stop();
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> json(var message) async {
|
|
||||||
var stopwatch = Stopwatch()..start();
|
|
||||||
|
|
||||||
var url = Uri.http('localhost:8080', '/json');
|
|
||||||
var response = await http.get(url);
|
|
||||||
print('Execution($message) Time: ${stopwatch.elapsed.inMilliseconds}ms');
|
|
||||||
stopwatch.stop();
|
|
||||||
|
|
||||||
if (response.statusCode == 200) {
|
|
||||||
print('Execution($message): success');
|
|
||||||
} else {
|
|
||||||
print('Execution($message): error');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> dbUpdate(var message) async {
|
|
||||||
var stopwatch = Stopwatch()..start();
|
|
||||||
|
|
||||||
var url = Uri.http('localhost:8080', '/updates', {'queries': "5"});
|
|
||||||
var response = await http.get(url);
|
|
||||||
print('Execution($message) Time: ${stopwatch.elapsed.inMilliseconds}ms');
|
|
||||||
stopwatch.stop();
|
|
||||||
|
|
||||||
if (response.statusCode == 200) {
|
|
||||||
print('Execution($message): success');
|
|
||||||
} else {
|
|
||||||
print('Execution($message): error');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> dbSingleQuery(var message) async {
|
|
||||||
var stopwatch = Stopwatch()..start();
|
|
||||||
|
|
||||||
var url = Uri.http('localhost:8080', '/db');
|
|
||||||
var response = await http.get(url);
|
|
||||||
print('Execution($message) Time: ${stopwatch.elapsed.inMilliseconds}ms');
|
|
||||||
stopwatch.stop();
|
|
||||||
|
|
||||||
if (response.statusCode == 200) {
|
|
||||||
print('Execution($message): success');
|
|
||||||
} else {
|
|
||||||
print('Execution($message): error');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> dbMultipleQuery(var message) async {
|
|
||||||
var stopwatch = Stopwatch()..start();
|
|
||||||
|
|
||||||
var url = Uri.http('localhost:8080', '/query', {'queries': "5"});
|
|
||||||
var response = await http.get(url);
|
|
||||||
print('Execution($message) Time: ${stopwatch.elapsed.inMilliseconds}ms');
|
|
||||||
stopwatch.stop();
|
|
||||||
|
|
||||||
if (response.statusCode == 200) {
|
|
||||||
print('Execution($message): success');
|
|
||||||
} else {
|
|
||||||
print('Execution($message): error');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void main() async {
|
|
||||||
var concurrency = 2000;
|
|
||||||
|
|
||||||
for (var i = 0; i < concurrency; i++) {
|
|
||||||
Isolate.spawn(dbSingleQuery, 'Instance_$i');
|
|
||||||
}
|
|
||||||
|
|
||||||
await Future.delayed(const Duration(seconds: 10));
|
|
||||||
|
|
||||||
//print("Exit");
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
name: performance_tool
|
|
||||||
version: 1.0.0
|
|
||||||
description: Angel3 performance testing tool
|
|
||||||
publish_to: none
|
|
||||||
environment:
|
|
||||||
sdk: '>=3.0.0 <4.0.0'
|
|
||||||
published_to: none
|
|
||||||
dependencies:
|
|
||||||
http: ^0.13.4
|
|
||||||
dev_dependencies:
|
|
||||||
lints: ^2.0.0
|
|
|
@ -1,19 +0,0 @@
|
||||||
### JSON Test
|
|
||||||
GET http://localhost:8080/json HTTP/1.1
|
|
||||||
|
|
||||||
### Plaintext Test
|
|
||||||
GET http://localhost:8080/plaintext HTTP/1.1
|
|
||||||
|
|
||||||
### Fortunes Test
|
|
||||||
GET http://localhost:8080/fortunes HTTP/1.1
|
|
||||||
|
|
||||||
### Db Test
|
|
||||||
GET http://localhost:8080/db HTTP/1.1
|
|
||||||
|
|
||||||
### Query test
|
|
||||||
GET http://localhost:8080/query?queries=20 HTTP/1.1
|
|
||||||
|
|
||||||
### Update Test
|
|
||||||
GET http://localhost:8080/updates?queries=20 HTTP/1.1
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue