From 68404f70abf61e9183711e7545eab2de5f011db0 Mon Sep 17 00:00:00 2001 From: Amr Gharbeia Date: Wed, 8 Apr 2026 10:54:08 -0400 Subject: [PATCH] test: add test-shell.lisp for OACP socket integration --- tests/test-shell.lisp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 tests/test-shell.lisp diff --git a/tests/test-shell.lisp b/tests/test-shell.lisp new file mode 100644 index 0000000..1da64e2 --- /dev/null +++ b/tests/test-shell.lisp @@ -0,0 +1,29 @@ +(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)