work in progress: server - move start / stop functionality to server package

This commit is contained in:
Helmut Merz 2024-06-17 18:46:07 +02:00
parent 1d08d653e9
commit 9f1e1cc3ce
3 changed files with 28 additions and 15 deletions

View file

@ -5,4 +5,5 @@
(setf *config* (setf *config*
(make-instance 'config:root :env-keys '(:address :port))) (make-instance 'config:root :env-keys '(:address :port)))
(make-instance 'server:config :parent *config*) (make-instance 'server:config :parent *config*
:port "8899")

View file

@ -13,18 +13,16 @@
(defvar *config* nil) (defvar *config* nil)
(defun run () (defun run ()
(let ((t:*test-suite* (t:test-suite "web"))) (let ((t:*test-suite* (t:test-suite "web"))
(*config* nil)
(server:*listener* nil))
(load (t:test-path "config-web" "etc")) (load (t:test-path "config-web" "etc"))
(test-server) (let ((cfg (car (config:children *config*))))
(test-server-config cfg)
(server:start cfg))
(sleep 1)
(server:stop)
(t:show-result))) (t:show-result)))
(defun app (env) (t:deftest test-server-config (cfg)
'(200 (:content-type "text/plain") ("Hello World!"))) (== (parse-integer (server:port cfg)) 8899))
(t:deftest test-server ()
(let ((cfg (car (config:children *config*))))
(== (parse-integer (server:port cfg)) 8888)
(setf server:*server*
(clack:clackup #'app
:port (parse-integer (server:port cfg))
:address (server:address cfg)))))

View file

@ -4,7 +4,7 @@
(:use :common-lisp) (:use :common-lisp)
(:local-nicknames (:config :scopes/config)) (:local-nicknames (:config :scopes/config))
(:export #:config #:address #:port (:export #:config #:address #:port
#:*server*)) #:*listener* #:start #:stop))
(in-package :scopes/web/server) (in-package :scopes/web/server)
@ -15,4 +15,18 @@
(defmethod initialize-instance :after ((cfg config) &key &allow-other-keys) (defmethod initialize-instance :after ((cfg config) &key &allow-other-keys)
(config:hash-to-slots (config:env-data cfg) cfg '(address port))) (config:hash-to-slots (config:env-data cfg) cfg '(address port)))
(defvar *server* nil) ;;;; listener = server process
(defvar *listener* nil)
(defun app (env)
'(200 (:content-type "text/plain") ("Hello World!")))
(defun start (cfg)
(setf *listener*
(clack:clackup #'app
:port (parse-integer (port cfg))
:address (address cfg))))
(defun stop ()
(clack:stop *listener*))