This is an automated email from the ASF dual-hosted git repository. pabloem pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/beam.git
The following commit(s) were added to refs/heads/master by this push: new daca914 Add java executor to compile java code in created file system environment. new 22edf27 Merge pull request #15660 from [BEAM-12971][Playground] Add java executor daca914 is described below commit daca9141a915a7ed9cb68fc88ce92ed1bd4e72af Author: Ilya Kozyrev <ilya.kozy...@akvelon.com> AuthorDate: Thu Oct 7 21:07:27 2021 +0300 Add java executor to compile java code in created file system environment. --- playground/backend/.gitkeep | 0 playground/backend/go.sum | 118 +++ playground/backend/internal/api/.gitkeep | 0 playground/backend/internal/api/playground.pb.go | 808 +++++++++++++++++++++ .../backend/internal/api/playground_grpc.pb.go | 232 ++++++ playground/backend/internal/executors/executor.go | 88 ++- .../executors/{javaexecutor.go => go_helper.go} | 16 +- .../backend/internal/executors/goexecutor.go | 31 - .../backend/internal/executors/java_helper.go | 69 ++ .../backend/internal/executors/java_helper_test.go | 76 ++ .../backend/internal/fs_tool/path_checker.go | 59 ++ 11 files changed, 1445 insertions(+), 52 deletions(-) diff --git a/playground/backend/.gitkeep b/playground/backend/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/playground/backend/go.sum b/playground/backend/go.sum new file mode 100644 index 0000000..de0b1d0 --- /dev/null +++ b/playground/backend/go.sum @@ -0,0 +1,118 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0 h1:LUVKkCeviFUMKqHa4tXIIij/lbhnMbP7Fn5wKdKkRh4= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up98WAHf3f/ulnJ62IyA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.41.0 h1:f+PlOh7QV4iIJkPrx5NQ7qaNGFQ3OTse67yaDHfju4E= +google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/playground/backend/internal/api/.gitkeep b/playground/backend/internal/api/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/playground/backend/internal/api/playground.pb.go b/playground/backend/internal/api/playground.pb.go new file mode 100644 index 0000000..e0dc640 --- /dev/null +++ b/playground/backend/internal/api/playground.pb.go @@ -0,0 +1,808 @@ +// +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.26.0 +// protoc v3.17.3 +// source: playground.proto + +package playground + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type Sdk int32 + +const ( + Sdk_SDK_UNSPECIFIED Sdk = 0 + Sdk_SDK_JAVA Sdk = 1 + Sdk_SDK_GO Sdk = 2 + Sdk_SDK_PYTHON Sdk = 3 + Sdk_SDK_SCIO Sdk = 4 +) + +// Enum value maps for Sdk. +var ( + Sdk_name = map[int32]string{ + 0: "SDK_UNSPECIFIED", + 1: "SDK_JAVA", + 2: "SDK_GO", + 3: "SDK_PYTHON", + 4: "SDK_SCIO", + } + Sdk_value = map[string]int32{ + "SDK_UNSPECIFIED": 0, + "SDK_JAVA": 1, + "SDK_GO": 2, + "SDK_PYTHON": 3, + "SDK_SCIO": 4, + } +) + +func (x Sdk) Enum() *Sdk { + p := new(Sdk) + *p = x + return p +} + +func (x Sdk) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Sdk) Descriptor() protoreflect.EnumDescriptor { + return file_playground_proto_enumTypes[0].Descriptor() +} + +func (Sdk) Type() protoreflect.EnumType { + return &file_playground_proto_enumTypes[0] +} + +func (x Sdk) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Sdk.Descriptor instead. +func (Sdk) EnumDescriptor() ([]byte, []int) { + return file_playground_proto_rawDescGZIP(), []int{0} +} + +type Status int32 + +const ( + Status_STATUS_UNSPECIFIED Status = 0 + Status_STATUS_EXECUTING Status = 1 + Status_STATUS_FINISHED Status = 2 + Status_STATUS_ERROR Status = 3 +) + +// Enum value maps for Status. +var ( + Status_name = map[int32]string{ + 0: "STATUS_UNSPECIFIED", + 1: "STATUS_EXECUTING", + 2: "STATUS_FINISHED", + 3: "STATUS_ERROR", + } + Status_value = map[string]int32{ + "STATUS_UNSPECIFIED": 0, + "STATUS_EXECUTING": 1, + "STATUS_FINISHED": 2, + "STATUS_ERROR": 3, + } +) + +func (x Status) Enum() *Status { + p := new(Status) + *p = x + return p +} + +func (x Status) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Status) Descriptor() protoreflect.EnumDescriptor { + return file_playground_proto_enumTypes[1].Descriptor() +} + +func (Status) Type() protoreflect.EnumType { + return &file_playground_proto_enumTypes[1] +} + +func (x Status) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Status.Descriptor instead. +func (Status) EnumDescriptor() ([]byte, []int) { + return file_playground_proto_rawDescGZIP(), []int{1} +} + +// RunCodeRequest represents a code text and options of SDK which executes the code. +type RunCodeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"` + Sdk Sdk `protobuf:"varint,2,opt,name=sdk,proto3,enum=playground.v1.Sdk" json:"sdk,omitempty"` +} + +func (x *RunCodeRequest) Reset() { + *x = RunCodeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_playground_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RunCodeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RunCodeRequest) ProtoMessage() {} + +func (x *RunCodeRequest) ProtoReflect() protoreflect.Message { + mi := &file_playground_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RunCodeRequest.ProtoReflect.Descriptor instead. +func (*RunCodeRequest) Descriptor() ([]byte, []int) { + return file_playground_proto_rawDescGZIP(), []int{0} +} + +func (x *RunCodeRequest) GetCode() string { + if x != nil { + return x.Code + } + return "" +} + +func (x *RunCodeRequest) GetSdk() Sdk { + if x != nil { + return x.Sdk + } + return Sdk_SDK_UNSPECIFIED +} + +// RunCodeResponse contains information of the pipeline uuid. +type RunCodeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PipelineUuid string `protobuf:"bytes,1,opt,name=pipeline_uuid,json=pipelineUuid,proto3" json:"pipeline_uuid,omitempty"` +} + +func (x *RunCodeResponse) Reset() { + *x = RunCodeResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_playground_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RunCodeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RunCodeResponse) ProtoMessage() {} + +func (x *RunCodeResponse) ProtoReflect() protoreflect.Message { + mi := &file_playground_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RunCodeResponse.ProtoReflect.Descriptor instead. +func (*RunCodeResponse) Descriptor() ([]byte, []int) { + return file_playground_proto_rawDescGZIP(), []int{1} +} + +func (x *RunCodeResponse) GetPipelineUuid() string { + if x != nil { + return x.PipelineUuid + } + return "" +} + +// CheckStatusRequest contains information of the pipeline uuid. +type CheckStatusRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PipelineUuid string `protobuf:"bytes,1,opt,name=pipeline_uuid,json=pipelineUuid,proto3" json:"pipeline_uuid,omitempty"` +} + +func (x *CheckStatusRequest) Reset() { + *x = CheckStatusRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_playground_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CheckStatusRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CheckStatusRequest) ProtoMessage() {} + +func (x *CheckStatusRequest) ProtoReflect() protoreflect.Message { + mi := &file_playground_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CheckStatusRequest.ProtoReflect.Descriptor instead. +func (*CheckStatusRequest) Descriptor() ([]byte, []int) { + return file_playground_proto_rawDescGZIP(), []int{2} +} + +func (x *CheckStatusRequest) GetPipelineUuid() string { + if x != nil { + return x.PipelineUuid + } + return "" +} + +// StatusInfo contains information about the status of the code execution. +type CheckStatusResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status Status `protobuf:"varint,1,opt,name=status,proto3,enum=playground.v1.Status" json:"status,omitempty"` +} + +func (x *CheckStatusResponse) Reset() { + *x = CheckStatusResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_playground_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CheckStatusResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CheckStatusResponse) ProtoMessage() {} + +func (x *CheckStatusResponse) ProtoReflect() protoreflect.Message { + mi := &file_playground_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CheckStatusResponse.ProtoReflect.Descriptor instead. +func (*CheckStatusResponse) Descriptor() ([]byte, []int) { + return file_playground_proto_rawDescGZIP(), []int{3} +} + +func (x *CheckStatusResponse) GetStatus() Status { + if x != nil { + return x.Status + } + return Status_STATUS_UNSPECIFIED +} + +// GetCompileOutputRequest contains information of the pipeline uuid. +type GetCompileOutputRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PipelineUuid string `protobuf:"bytes,1,opt,name=pipeline_uuid,json=pipelineUuid,proto3" json:"pipeline_uuid,omitempty"` +} + +func (x *GetCompileOutputRequest) Reset() { + *x = GetCompileOutputRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_playground_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetCompileOutputRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCompileOutputRequest) ProtoMessage() {} + +func (x *GetCompileOutputRequest) ProtoReflect() protoreflect.Message { + mi := &file_playground_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetCompileOutputRequest.ProtoReflect.Descriptor instead. +func (*GetCompileOutputRequest) Descriptor() ([]byte, []int) { + return file_playground_proto_rawDescGZIP(), []int{4} +} + +func (x *GetCompileOutputRequest) GetPipelineUuid() string { + if x != nil { + return x.PipelineUuid + } + return "" +} + +// GetCompileOutputResponse represents the result of the compiled code. +type GetCompileOutputResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Output string `protobuf:"bytes,1,opt,name=output,proto3" json:"output,omitempty"` + CompilationStatus Status `protobuf:"varint,2,opt,name=compilation_status,json=compilationStatus,proto3,enum=playground.v1.Status" json:"compilation_status,omitempty"` +} + +func (x *GetCompileOutputResponse) Reset() { + *x = GetCompileOutputResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_playground_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetCompileOutputResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCompileOutputResponse) ProtoMessage() {} + +func (x *GetCompileOutputResponse) ProtoReflect() protoreflect.Message { + mi := &file_playground_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetCompileOutputResponse.ProtoReflect.Descriptor instead. +func (*GetCompileOutputResponse) Descriptor() ([]byte, []int) { + return file_playground_proto_rawDescGZIP(), []int{5} +} + +func (x *GetCompileOutputResponse) GetOutput() string { + if x != nil { + return x.Output + } + return "" +} + +func (x *GetCompileOutputResponse) GetCompilationStatus() Status { + if x != nil { + return x.CompilationStatus + } + return Status_STATUS_UNSPECIFIED +} + +// GetRunOutputRequest contains information of the pipeline uuid. +type GetRunOutputRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PipelineUuid string `protobuf:"bytes,1,opt,name=pipeline_uuid,json=pipelineUuid,proto3" json:"pipeline_uuid,omitempty"` +} + +func (x *GetRunOutputRequest) Reset() { + *x = GetRunOutputRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_playground_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetRunOutputRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetRunOutputRequest) ProtoMessage() {} + +func (x *GetRunOutputRequest) ProtoReflect() protoreflect.Message { + mi := &file_playground_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetRunOutputRequest.ProtoReflect.Descriptor instead. +func (*GetRunOutputRequest) Descriptor() ([]byte, []int) { + return file_playground_proto_rawDescGZIP(), []int{6} +} + +func (x *GetRunOutputRequest) GetPipelineUuid() string { + if x != nil { + return x.PipelineUuid + } + return "" +} + +// RunOutputResponse represents the result of the executed code. +type GetRunOutputResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Output string `protobuf:"bytes,1,opt,name=output,proto3" json:"output,omitempty"` + CompilationStatus Status `protobuf:"varint,2,opt,name=compilation_status,json=compilationStatus,proto3,enum=playground.v1.Status" json:"compilation_status,omitempty"` +} + +func (x *GetRunOutputResponse) Reset() { + *x = GetRunOutputResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_playground_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetRunOutputResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetRunOutputResponse) ProtoMessage() {} + +func (x *GetRunOutputResponse) ProtoReflect() protoreflect.Message { + mi := &file_playground_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetRunOutputResponse.ProtoReflect.Descriptor instead. +func (*GetRunOutputResponse) Descriptor() ([]byte, []int) { + return file_playground_proto_rawDescGZIP(), []int{7} +} + +func (x *GetRunOutputResponse) GetOutput() string { + if x != nil { + return x.Output + } + return "" +} + +func (x *GetRunOutputResponse) GetCompilationStatus() Status { + if x != nil { + return x.CompilationStatus + } + return Status_STATUS_UNSPECIFIED +} + +var File_playground_proto protoreflect.FileDescriptor + +var file_playground_proto_rawDesc = []byte{ + 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x76, + 0x31, 0x22, 0x4a, 0x0a, 0x0e, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x03, 0x73, 0x64, 0x6b, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x64, 0x6b, 0x52, 0x03, 0x73, 0x64, 0x6b, 0x22, 0x36, 0x0a, + 0x0f, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x75, 0x75, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, + 0x65, 0x55, 0x75, 0x69, 0x64, 0x22, 0x39, 0x0a, 0x12, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, + 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x55, 0x75, 0x69, 0x64, + 0x22, 0x44, 0x0a, 0x13, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, + 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x3e, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, + 0x70, 0x69, 0x6c, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x75, 0x75, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, + 0x6e, 0x65, 0x55, 0x75, 0x69, 0x64, 0x22, 0x78, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, + 0x70, 0x69, 0x6c, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x44, 0x0a, 0x12, 0x63, 0x6f, + 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, + 0x75, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x11, 0x63, + 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x22, 0x3a, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x69, 0x70, 0x65, 0x6c, + 0x69, 0x6e, 0x65, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x55, 0x75, 0x69, 0x64, 0x22, 0x74, 0x0a, 0x14, + 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x44, 0x0a, 0x12, + 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x67, + 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x2a, 0x52, 0x0a, 0x03, 0x53, 0x64, 0x6b, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x44, 0x4b, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, + 0x0a, 0x08, 0x53, 0x44, 0x4b, 0x5f, 0x4a, 0x41, 0x56, 0x41, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, + 0x53, 0x44, 0x4b, 0x5f, 0x47, 0x4f, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x44, 0x4b, 0x5f, + 0x50, 0x59, 0x54, 0x48, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x44, 0x4b, 0x5f, + 0x53, 0x43, 0x49, 0x4f, 0x10, 0x04, 0x2a, 0x5d, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x13, + 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x49, 0x4e, 0x49, 0x53, 0x48, 0x45, + 0x44, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x52, + 0x52, 0x4f, 0x52, 0x10, 0x03, 0x32, 0xf1, 0x02, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x79, 0x67, 0x72, + 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x48, 0x0a, 0x07, 0x52, + 0x75, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, + 0x75, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, + 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, + 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x0c, 0x47, + 0x65, 0x74, 0x52, 0x75, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x22, 0x2e, 0x70, 0x6c, + 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, + 0x75, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x23, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x69, + 0x6c, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x26, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x67, + 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, + 0x69, 0x6c, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x27, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2f, 0x62, + 0x65, 0x61, 0x6d, 0x2f, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2f, 0x76, + 0x31, 0x3b, 0x70, 0x6c, 0x61, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_playground_proto_rawDescOnce sync.Once + file_playground_proto_rawDescData = file_playground_proto_rawDesc +) + +func file_playground_proto_rawDescGZIP() []byte { + file_playground_proto_rawDescOnce.Do(func() { + file_playground_proto_rawDescData = protoimpl.X.CompressGZIP(file_playground_proto_rawDescData) + }) + return file_playground_proto_rawDescData +} + +var file_playground_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_playground_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_playground_proto_goTypes = []interface{}{ + (Sdk)(0), // 0: playground.v1.Sdk + (Status)(0), // 1: playground.v1.Status + (*RunCodeRequest)(nil), // 2: playground.v1.RunCodeRequest + (*RunCodeResponse)(nil), // 3: playground.v1.RunCodeResponse + (*CheckStatusRequest)(nil), // 4: playground.v1.CheckStatusRequest + (*CheckStatusResponse)(nil), // 5: playground.v1.CheckStatusResponse + (*GetCompileOutputRequest)(nil), // 6: playground.v1.GetCompileOutputRequest + (*GetCompileOutputResponse)(nil), // 7: playground.v1.GetCompileOutputResponse + (*GetRunOutputRequest)(nil), // 8: playground.v1.GetRunOutputRequest + (*GetRunOutputResponse)(nil), // 9: playground.v1.GetRunOutputResponse +} +var file_playground_proto_depIdxs = []int32{ + 0, // 0: playground.v1.RunCodeRequest.sdk:type_name -> playground.v1.Sdk + 1, // 1: playground.v1.CheckStatusResponse.status:type_name -> playground.v1.Status + 1, // 2: playground.v1.GetCompileOutputResponse.compilation_status:type_name -> playground.v1.Status + 1, // 3: playground.v1.GetRunOutputResponse.compilation_status:type_name -> playground.v1.Status + 2, // 4: playground.v1.PlaygroundService.RunCode:input_type -> playground.v1.RunCodeRequest + 4, // 5: playground.v1.PlaygroundService.CheckStatus:input_type -> playground.v1.CheckStatusRequest + 8, // 6: playground.v1.PlaygroundService.GetRunOutput:input_type -> playground.v1.GetRunOutputRequest + 6, // 7: playground.v1.PlaygroundService.GetCompileOutput:input_type -> playground.v1.GetCompileOutputRequest + 3, // 8: playground.v1.PlaygroundService.RunCode:output_type -> playground.v1.RunCodeResponse + 5, // 9: playground.v1.PlaygroundService.CheckStatus:output_type -> playground.v1.CheckStatusResponse + 9, // 10: playground.v1.PlaygroundService.GetRunOutput:output_type -> playground.v1.GetRunOutputResponse + 7, // 11: playground.v1.PlaygroundService.GetCompileOutput:output_type -> playground.v1.GetCompileOutputResponse + 8, // [8:12] is the sub-list for method output_type + 4, // [4:8] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_playground_proto_init() } +func file_playground_proto_init() { + if File_playground_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_playground_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RunCodeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_playground_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RunCodeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_playground_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CheckStatusRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_playground_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CheckStatusResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_playground_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCompileOutputRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_playground_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCompileOutputResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_playground_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetRunOutputRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_playground_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetRunOutputResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_playground_proto_rawDesc, + NumEnums: 2, + NumMessages: 8, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_playground_proto_goTypes, + DependencyIndexes: file_playground_proto_depIdxs, + EnumInfos: file_playground_proto_enumTypes, + MessageInfos: file_playground_proto_msgTypes, + }.Build() + File_playground_proto = out.File + file_playground_proto_rawDesc = nil + file_playground_proto_goTypes = nil + file_playground_proto_depIdxs = nil +} diff --git a/playground/backend/internal/api/playground_grpc.pb.go b/playground/backend/internal/api/playground_grpc.pb.go new file mode 100644 index 0000000..f8e11ca --- /dev/null +++ b/playground/backend/internal/api/playground_grpc.pb.go @@ -0,0 +1,232 @@ +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. + +package playground + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// PlaygroundServiceClient is the client API for PlaygroundService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type PlaygroundServiceClient interface { + // Submit the job for an execution and get the pipeline uuid. + RunCode(ctx context.Context, in *RunCodeRequest, opts ...grpc.CallOption) (*RunCodeResponse, error) + // Get the status of pipeline execution. + CheckStatus(ctx context.Context, in *CheckStatusRequest, opts ...grpc.CallOption) (*CheckStatusResponse, error) + // Get the result of pipeline execution. + GetRunOutput(ctx context.Context, in *GetRunOutputRequest, opts ...grpc.CallOption) (*GetRunOutputResponse, error) + // Get the result of pipeline compilation. + GetCompileOutput(ctx context.Context, in *GetCompileOutputRequest, opts ...grpc.CallOption) (*GetCompileOutputResponse, error) +} + +type playgroundServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewPlaygroundServiceClient(cc grpc.ClientConnInterface) PlaygroundServiceClient { + return &playgroundServiceClient{cc} +} + +func (c *playgroundServiceClient) RunCode(ctx context.Context, in *RunCodeRequest, opts ...grpc.CallOption) (*RunCodeResponse, error) { + out := new(RunCodeResponse) + err := c.cc.Invoke(ctx, "/playground.v1.PlaygroundService/RunCode", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *playgroundServiceClient) CheckStatus(ctx context.Context, in *CheckStatusRequest, opts ...grpc.CallOption) (*CheckStatusResponse, error) { + out := new(CheckStatusResponse) + err := c.cc.Invoke(ctx, "/playground.v1.PlaygroundService/CheckStatus", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *playgroundServiceClient) GetRunOutput(ctx context.Context, in *GetRunOutputRequest, opts ...grpc.CallOption) (*GetRunOutputResponse, error) { + out := new(GetRunOutputResponse) + err := c.cc.Invoke(ctx, "/playground.v1.PlaygroundService/GetRunOutput", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *playgroundServiceClient) GetCompileOutput(ctx context.Context, in *GetCompileOutputRequest, opts ...grpc.CallOption) (*GetCompileOutputResponse, error) { + out := new(GetCompileOutputResponse) + err := c.cc.Invoke(ctx, "/playground.v1.PlaygroundService/GetCompileOutput", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// PlaygroundServiceServer is the server API for PlaygroundService service. +// All implementations must embed UnimplementedPlaygroundServiceServer +// for forward compatibility +type PlaygroundServiceServer interface { + // Submit the job for an execution and get the pipeline uuid. + RunCode(context.Context, *RunCodeRequest) (*RunCodeResponse, error) + // Get the status of pipeline execution. + CheckStatus(context.Context, *CheckStatusRequest) (*CheckStatusResponse, error) + // Get the result of pipeline execution. + GetRunOutput(context.Context, *GetRunOutputRequest) (*GetRunOutputResponse, error) + // Get the result of pipeline compilation. + GetCompileOutput(context.Context, *GetCompileOutputRequest) (*GetCompileOutputResponse, error) + mustEmbedUnimplementedPlaygroundServiceServer() +} + +// UnimplementedPlaygroundServiceServer must be embedded to have forward compatible implementations. +type UnimplementedPlaygroundServiceServer struct { +} + +func (UnimplementedPlaygroundServiceServer) RunCode(context.Context, *RunCodeRequest) (*RunCodeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RunCode not implemented") +} +func (UnimplementedPlaygroundServiceServer) CheckStatus(context.Context, *CheckStatusRequest) (*CheckStatusResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CheckStatus not implemented") +} +func (UnimplementedPlaygroundServiceServer) GetRunOutput(context.Context, *GetRunOutputRequest) (*GetRunOutputResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetRunOutput not implemented") +} +func (UnimplementedPlaygroundServiceServer) GetCompileOutput(context.Context, *GetCompileOutputRequest) (*GetCompileOutputResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetCompileOutput not implemented") +} +func (UnimplementedPlaygroundServiceServer) mustEmbedUnimplementedPlaygroundServiceServer() {} + +// UnsafePlaygroundServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to PlaygroundServiceServer will +// result in compilation errors. +type UnsafePlaygroundServiceServer interface { + mustEmbedUnimplementedPlaygroundServiceServer() +} + +func RegisterPlaygroundServiceServer(s grpc.ServiceRegistrar, srv PlaygroundServiceServer) { + s.RegisterService(&PlaygroundService_ServiceDesc, srv) +} + +func _PlaygroundService_RunCode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RunCodeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PlaygroundServiceServer).RunCode(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/playground.v1.PlaygroundService/RunCode", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PlaygroundServiceServer).RunCode(ctx, req.(*RunCodeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _PlaygroundService_CheckStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CheckStatusRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PlaygroundServiceServer).CheckStatus(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/playground.v1.PlaygroundService/CheckStatus", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PlaygroundServiceServer).CheckStatus(ctx, req.(*CheckStatusRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _PlaygroundService_GetRunOutput_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetRunOutputRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PlaygroundServiceServer).GetRunOutput(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/playground.v1.PlaygroundService/GetRunOutput", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PlaygroundServiceServer).GetRunOutput(ctx, req.(*GetRunOutputRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _PlaygroundService_GetCompileOutput_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetCompileOutputRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PlaygroundServiceServer).GetCompileOutput(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/playground.v1.PlaygroundService/GetCompileOutput", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PlaygroundServiceServer).GetCompileOutput(ctx, req.(*GetCompileOutputRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// PlaygroundService_ServiceDesc is the grpc.ServiceDesc for PlaygroundService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var PlaygroundService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "playground.v1.PlaygroundService", + HandlerType: (*PlaygroundServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "RunCode", + Handler: _PlaygroundService_RunCode_Handler, + }, + { + MethodName: "CheckStatus", + Handler: _PlaygroundService_CheckStatus_Handler, + }, + { + MethodName: "GetRunOutput", + Handler: _PlaygroundService_GetRunOutput_Handler, + }, + { + MethodName: "GetCompileOutput", + Handler: _PlaygroundService_GetCompileOutput_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "playground.proto", +} diff --git a/playground/backend/internal/executors/executor.go b/playground/backend/internal/executors/executor.go index ecc655f..a5e258d 100644 --- a/playground/backend/internal/executors/executor.go +++ b/playground/backend/internal/executors/executor.go @@ -13,19 +13,85 @@ // See the License for the specific language governing permissions and // limitations under the License. -// Interface for all executors (Java/Python/Go/SCIO) +// Package executors package executors -type executor interface { - // Validate validates executable file. - // Return result of validation (true/false) and error if it occurs - Validate(filePath string) (bool, error) +import ( + pb "beam.apache.org/playground/backend/internal/api" + "beam.apache.org/playground/backend/internal/fs_tool" + "fmt" + "os/exec" +) - // Compile compiles executable file. - // Return error if it occurs - Compile(filePath string) error +type validatorWithArgs struct { + validator func(filePath string, args ...interface{}) error + args []interface{} +} + +// Executor interface for all executors (Java/Python/Go/SCIO) +type Executor struct { + relativeFilePath string + absoulteFilePath string + dirPath string + executableDir string + validators []validatorWithArgs + compileName string + compileArgs []string + runName string + runArgs []string +} + +// Validate checks that the file exists and that extension of the file matches the SDK. +// Return result of validation (true/false) and error if it occurs +func (ex *Executor) Validate() error { + for _, validator := range ex.validators { + err := validator.validator(ex.absoulteFilePath, validator.args...) + if err != nil { + return err + } + } + return nil +} + +// Compile compiles the code and creates executable file. +// Return error if it occurs +func (ex *Executor) Compile() error { + args := append(ex.compileArgs, ex.relativeFilePath) + cmd := exec.Command(ex.compileName, args...) + cmd.Dir = ex.dirPath + s := cmd.String() + fmt.Println(s) + out, err := cmd.CombinedOutput() + if err != nil { + return &CompileError{string(out)} + } + return nil +} + +// Run runs the executable file. +// Return logs and error if it occurs +func (ex *Executor) Run(name string) (string, error) { + args := append(ex.runArgs, name) + cmd := exec.Command(ex.runName, args...) + cmd.Dir = ex.dirPath + out, err := cmd.Output() + return string(out), err +} + +// NewExecutor executes the compilation, running and validation of code +func NewExecutor(apacheBeamSdk pb.Sdk, fs *fs_tool.LifeCycle) (*Executor, error) { + switch apacheBeamSdk { + case pb.Sdk_SDK_JAVA: + return NewJavaExecutor(fs, GetJavaValidators()), nil + default: + return nil, fmt.Errorf("%s isn't supported now", apacheBeamSdk) + } +} + +type CompileError struct { + error string +} - // Run runs executable file. - // Return logs and error if it occurs - Run(filePath string) (string, error) +func (e *CompileError) Error() string { + return fmt.Sprintf("Compilation error: %v", e.error) } diff --git a/playground/backend/internal/executors/javaexecutor.go b/playground/backend/internal/executors/go_helper.go similarity index 73% rename from playground/backend/internal/executors/javaexecutor.go rename to playground/backend/internal/executors/go_helper.go index e67f715..a9d72bb 100644 --- a/playground/backend/internal/executors/javaexecutor.go +++ b/playground/backend/internal/executors/go_helper.go @@ -13,19 +13,15 @@ // See the License for the specific language governing permissions and // limitations under the License. -// Executor for Java +// Package executors package executors -type JavaExecutor struct{} - -func (javaExec JavaExecutor) Validate(filePath string) (bool, error) { - return true, nil -} - -func (javaExec JavaExecutor) Compile(filePath string) error { +// NewGoExecutor creates an executor with Go specifics +func NewGoExecutor(fs *fs_tool.LifeCycle, javaValidators *[]validatorWithArgs) *Executor { return nil } -func (javaExec JavaExecutor) Run(filePath string) (string, error) { - return "", nil +// GetGoValidators return validators methods that needed for Go file +func GetGoValidators() *[]validatorWithArgs { + return nil } diff --git a/playground/backend/internal/executors/goexecutor.go b/playground/backend/internal/executors/goexecutor.go deleted file mode 100644 index 339d09f..0000000 --- a/playground/backend/internal/executors/goexecutor.go +++ /dev/null @@ -1,31 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one or more -// contributor license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright ownership. -// The ASF licenses this file to You under the Apache License, Version 2.0 -// (the "License"); you may not use this file except in compliance with -// the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Executor for Go -package executors - -type GoExecutor struct{} - -func (goExec GoExecutor) Validate(filePath string) (bool, error) { - return true, nil -} - -func (goExec GoExecutor) Compile(filePath string) error { - return nil -} - -func (goExec GoExecutor) Run(filePath string) (string, error) { - return "", nil -} diff --git a/playground/backend/internal/executors/java_helper.go b/playground/backend/internal/executors/java_helper.go new file mode 100644 index 0000000..3945c63 --- /dev/null +++ b/playground/backend/internal/executors/java_helper.go @@ -0,0 +1,69 @@ +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package executors +package executors + +import ( + "beam.apache.org/playground/backend/internal/fs_tool" + "os" + "path/filepath" + "strings" +) + +const ( + beamJarPath = "/opt/apache/beam/jars/beam-sdks-java-harness.jar" + runnerJarPath = "/opt/apache/beam/jars/beam-runners-direct.jar" + slf4jPath = "/opt/apache/beam/jars/slf4j-jdk14.jar" + javaExtension = ".java" + javaCompileCmd = "javac" + javaRunCmd = "java" + binFolder = "bin" +) + +// NewJavaExecutor creates an executor with Go specifics +func NewJavaExecutor(fs *fs_tool.LifeCycle, javaValidators *[]validatorWithArgs) *Executor { + compileArgs := []string{"-d", binFolder, "-classpath", beamJarPath} + fullClassPath := strings.Join([]string{binFolder, beamJarPath, runnerJarPath, slf4jPath}, ":") + runArgs := []string{"-cp", fullClassPath} + if javaValidators == nil { + v := make([]validatorWithArgs, 0) + javaValidators = &v + } + path, _ := os.Getwd() + + exec := new(Executor) + exec.validators = *javaValidators + exec.relativeFilePath = fs.GetRelativeExecutableFilePath() + exec.absoulteFilePath = fs.GetAbsoluteExecutableFilePath() + exec.dirPath = filepath.Join(path, fs.Folder.BaseFolder) + exec.compileName = javaCompileCmd + exec.runName = javaRunCmd + exec.compileArgs = compileArgs + exec.runArgs = runArgs + return exec +} + +// GetJavaValidators return validators methods that needed for Java file +func GetJavaValidators() *[]validatorWithArgs { + validatorArgs := make([]interface{}, 1) + validatorArgs[0] = javaExtension + pathCheckerValidator := validatorWithArgs{ + validator: fs_tool.CheckPathIsValid, + args: validatorArgs, + } + validators := []validatorWithArgs{pathCheckerValidator} + return &validators +} diff --git a/playground/backend/internal/executors/java_helper_test.go b/playground/backend/internal/executors/java_helper_test.go new file mode 100644 index 0000000..332717a --- /dev/null +++ b/playground/backend/internal/executors/java_helper_test.go @@ -0,0 +1,76 @@ +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package executors + +import ( + pb "beam.apache.org/playground/backend/internal/api" + "beam.apache.org/playground/backend/internal/fs_tool" + "github.com/google/uuid" + "testing" +) + +var ( + javaExecutor *Executor + pipelineId = uuid.New() +) + +const ( + javaCode = "class HelloWorld {\n public static void main(String[] args) {\n System.out.println(\"Hello World!\");\n }\n}" +) + +func TestMain(m *testing.M) { + javaFS := setup() + defer teardown(javaFS) + m.Run() +} + +func setup() *fs_tool.LifeCycle { + javaFS, _ := fs_tool.NewLifeCycle(pb.Sdk_SDK_JAVA, pipelineId) + _ = javaFS.CreateFolders() + _, _ = javaFS.CreateExecutableFile(javaCode) + javaExecutor = NewJavaExecutor(javaFS, GetJavaValidators()) + return javaFS +} + +func teardown(javaFS *fs_tool.LifeCycle) { + err := javaFS.DeleteFolders() + if err != nil { + return + } +} + +func TestValidateJavaFile(t *testing.T) { + err := javaExecutor.Validate() + if err != nil { + t.Fatalf(`TestValidateJavaFile error: %v `, err) + } +} + +func TestCompileJavaFile(t *testing.T) { + err := javaExecutor.Compile() + if err != nil { + t.Fatalf("TestCompileJavaFile: Unexpexted error at compiliation: %s ", err.Error()) + } +} + +func TestRunJavaFile(t *testing.T) { + className := "HelloWorld" + expected := "Hello World!\n" + out, err := javaExecutor.Run(className) + if expected != out || err != nil { + t.Fatalf(`TestRunJavaFile: '%q, %v' doesn't match for '%#q', nil`, out, err, expected) + } +} diff --git a/playground/backend/internal/fs_tool/path_checker.go b/playground/backend/internal/fs_tool/path_checker.go new file mode 100644 index 0000000..d92ee78 --- /dev/null +++ b/playground/backend/internal/fs_tool/path_checker.go @@ -0,0 +1,59 @@ +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package fs_tool utils for checking the valid file path +package fs_tool + +import ( + "errors" + "fmt" + "io/fs" + "os" + "path/filepath" + "strings" +) + +type WrongExtension struct { + error string +} + +func (e *WrongExtension) Error() string { + return fmt.Sprintf("File has wrong extension: %v", e.error) +} + +// isNotExist checks if file exists or not and returns error is file doesn't exist +func isNotExist(filePath string) bool { + _, err := os.Stat(filePath) + return errors.Is(err, fs.ErrNotExist) +} + +// isCorrectExtension checks if the file has correct extension (.java, .go, .py) +func isCorrectExtension(filePath string, correctExtension string) bool { + fileExtension := filepath.Ext(filePath) + return strings.EqualFold(fileExtension, correctExtension) +} + +// CheckPathIsValid checks that the file exists and has a correct extension +func CheckPathIsValid(filePath string, args ...interface{}) error { + correctExtension := args[0].(string) + notExists := isNotExist(filePath) + if notExists { + return fs.ErrNotExist + } + if !isCorrectExtension(filePath, correctExtension) { + return &WrongExtension{fmt.Sprintf("expected extension %s", correctExtension)} + } + return nil +}