about summary refs log tree commit diff stats
path: root/086scenario_console_test.mu
blob: 754f1166006c9e3cfd1838c85ae597969e5cbc96 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# To check our support for consoles in scenarios, rewrite tests from
# scenario_console.mu
# Tests for console interface.

scenario read-key-in-mu [
  assume-console [
    type [abc]
  ]
  run [
    1:character, console:address:console, 2:boolean <- read-key console:address:console
    3:character, console:address:console, 4:boolean <- read-key console:address:console
    5:character, console:address:console, 6:boolean <- read-key console:address:console
    7:character, console:address:console, 8:boolean <- read-key console:address:console
  ]
  memory-should-contain [
    1 <- 97  # 'a'
    2 <- 1
    3 <- 98  # 'b'
    4 <- 1
    5 <- 99  # 'c'
    6 <- 1
    7 <- 0  # eof
    8 <- 1
  ]
]
an class="nx">NewRouter().StrictSlash(true) setIndexRouting(index) api := index.PathPrefix("/api").Subrouter() setEndpointRouting(api) confObj.Mu.RLock() portnum := fmt.Sprintf(":%v", confObj.Port) if !confObj.IsProxied { index.Host(confObj.Instance.URL) } TLS := confObj.TLS.Use TLSCert := confObj.TLS.Cert TLSKey := confObj.TLS.Key confObj.Mu.RUnlock() server := newServer(portnum, index) if TLS { cert, err := tls.LoadX509KeyPair(TLSCert, TLSKey) errFatal("", err) cfg := &tls.Config{Certificates: []tls.Certificate{cert}} lstnr, err := tls.Listen("tcp", portnum, cfg) errFatal("", err) server.TLSConfig = cfg startAnnounce(portnum, before) errLog("", server.ServeTLS(lstnr, "", "")) } else { startAnnounce(portnum, before) errLog("", server.ListenAndServe()) } closeLog <- true killTickers() killDB() close(dbChan) close(closeLog) } func startAnnounce(portnum string, before time.Time) { log.Printf("*** Listening on %v\n", portnum) log.Printf("*** getwtxt %v Startup finished at %v, took %v\n\n", Vers, time.Now().Format(time.RFC3339), time.Since(before)) } func newServer(port string, index *mux.Router) *http.Server { // handlers.CompressHandler gzips all responses. // ipMiddleware passes the request IP along. // Write/Read timeouts are self explanatory. return &http.Server{ Handler: handlers.CompressHandler(ipMiddleware(index)), Addr: port, WriteTimeout: 15 * time.Second, ReadTimeout: 15 * time.Second, } } func setIndexRouting(index *mux.Router) { index.Path("/"). Methods("GET", "HEAD"). HandlerFunc(staticHandler) index.Path("/css"). Methods("GET", "HEAD"). HandlerFunc(staticHandler) index.Path("/api"). Methods("GET", "HEAD"). HandlerFunc(apiBaseHandler) } func setEndpointRouting(api *mux.Router) { // twtxt will add support for other formats later. // Maybe json? Making this future-proof. api.Path("/{format:(?:plain)}"). Methods("GET", "HEAD"). HandlerFunc(apiFormatHandler) // Non-standard API call to list *all* tweets // in a single request. api.Path("/{format:(?:plain)}/tweets/all"). Methods("GET", "HEAD"). HandlerFunc(apiAllTweetsHandler) // Specifying the endpoint with and without query information. // Will return 404 on empty queries otherwise. api.Path("/{format:(?:plain)}/{endpoint:(?:mentions|users|tweets|version)}"). Methods("GET", "HEAD"). HandlerFunc(apiEndpointHandler) api.Path("/{format:(?:plain)}/{endpoint:(?:mentions|users|tweets)}"). Queries("url", "{url}", "q", "{query}", "page", "{[0-9]+}"). Methods("GET", "HEAD"). HandlerFunc(apiEndpointHandler) // This is for submitting new users. Both query variables must exist // in the request for this to match. api.Path("/{format:(?:plain)}/{endpoint:users}"). Queries("url", "{url}", "nickname", "{nickname:[a-zA-Z0-9_-]+}"). Methods("POST"). HandlerFunc(apiEndpointPOSTHandler) // This is for submitting new users incorrectly // and letting the requester know about their error. api.Path("/{format:(?:plain)}/{endpoint:users}"). Queries("url", "{url}"). Methods("POST"). HandlerFunc(apiEndpointPOSTHandler) // This is also for submitting new users incorrectly // and letting the requester know about their error. api.Path("/{format:(?:plain)}/{endpoint:users}"). Queries("nickname", "{nickname:[a-zA-Z0-9_-]+}"). Methods("POST"). HandlerFunc(apiEndpointPOSTHandler) // Show all observed tags api.Path("/{format:(?:plain)}/tags"). Methods("GET", "HEAD"). HandlerFunc(apiTagsBaseHandler) // Show Nth page of all observed tags api.Path("/{format:(?:plain)}/tags"). Queries("page", "{[0-9]+}"). Methods("GET", "HEAD"). HandlerFunc(apiTagsBaseHandler) // Requests statuses with a specific tag api.Path("/{format:(?:plain)}/tags/{tags:[a-zA-Z0-9_-]+}"). Methods("GET", "HEAD"). HandlerFunc(apiTagsHandler) // Requests Nth page of statuses with a specific tag api.Path("/{format:(?:plain)}/tags/{tags:[a-zA-Z0-9_-]+}"). Queries("page", "{[0-9]+}"). Methods("GET", "HEAD"). HandlerFunc(apiTagsHandler) }