Files
passepartout/tests/test-shell.lisp

30 lines
1.2 KiB
Common Lisp

(require :usocket)
(defun test-shell-execution ()
(let* ((socket (usocket:socket-connect "127.0.0.1" 9105))
(stream (usocket:socket-stream socket))
;; We send a chat message asking to run date
(msg "(:type :event :payload (:sensor :chat-message :text \"run date\"))")
(len (length msg))
(framed (format nil "~6,'0x~a" len msg)))
(format t "Sending request: ~a~%" msg)
(write-string framed stream)
(finish-output stream)
(format t "Waiting for Shell Actuator response...~%")
(handler-case
(loop
(let* ((len-prefix (make-string 6)))
(read-sequence len-prefix stream)
(let* ((msg-len (parse-integer len-prefix :radix 16))
(payload (make-string msg-len)))
(read-sequence payload stream)
(format t "AGENT REPLY: ~a~%" payload)
;; We look for the Shell Command Result headline in the response
(when (search "Shell Command Result" payload)
(format t "SUCCESS: Shell output received!~%")
(return)))))
(error (c) (format t "ERROR: ~a~%" c)))
(usocket:socket-close socket)))
(test-shell-execution)