yegor256 / requs

Controlled Natural Language for Requirements Specifications
https://www.requs.org
Other
39 stars 5 forks source link

Unknown message when running -Pqulice #64

Open kikec opened 10 years ago

kikec commented 10 years ago

I compiled main.req file from Thindeck project without any changes (just deleted dot, and inserted it again to invoke update file). I entered: mvn clean install -Pqulice in cmd line and got following error message on running -Pqulice (tried several times):

Compile failed: org.xemply.ImpossibleModificationException: directive #3140: STRICT "1": 2 current nodes [slots/slot, slots/slot while strictly 1 expected

I'll try to do it again and submit pull request. Mentioned in #66 in Thindeck project.

davvd commented 10 years ago

I'm aware of the task, give me some time to find a developer...

davvd commented 10 years ago

@kikec thanks for this report, I added 15 mins to your account, in transaction 39917680

davvd commented 10 years ago

@yegor256 can you please help? Keep in mind this. If you have any technical questions, don't hesitate to ask right here

davvd commented 10 years ago

@yegor256 This task's budget is 30 mins. This is exactly how much will be paid when the problem explained above is solved. See this for more information

kikec commented 10 years ago

I've sent pull request with files on which I got this error. Please check issue66 in Thindeck project regarding forementioned.

kikec commented 10 years ago

@yegor256 This is error that I keep getting regardless what I update in my local Thindeck project.

requs_error Please see if you know how to solve this. I'm totally stuck, I cannot finish any of my tasks, and I keep losing them. Should I try to reinstall all Thindeck project again?

yegor256 commented 10 years ago

@kikec please post the entire .req file here - I'll be able to reproduce the bug and fix it. It's definitely a bug in Requs

kikec commented 10 years ago

OK here it goes. Now I changed a bit UC6, but same message appears regardless what I do to main.req file. Even no change at all...

System is "a web hosting that deploys itself".

MeanTimeBetweenFailures is "time that System spends in continuous up time between one failure and the next failure.
MTBF is a measure of System reliability via continuous operation and therefore the MTBF target should be set at the highest achievable number. Users will not be notified of failures or down time".

MeanTimeToRecovery is "time that System spends in unscheduled down time until recovery as a result of failure.
MTTR is a measure of System reliability via service recovery and therefore the MTTR target should be set at the lowest achievable number".

:UC1 is specified.
:UC1 is a must.
UC1 where User (a user) hosts Repository (a repo):
    1. The user registers the repo;
    2. The repo deploys itself;
    3. The user reads deployment logs of the repo;
    4. The user reads usage stats of the repo;
    5. The user compensates usage of the repo;
    6. The user terminates the repo.
UC1/UX must "be in English only".
UC1/WEBDESIGN must "be 'responsive', see http://en.wikipedia.org/wiki/Responsive_web_design . Since all thindeck site pages will look good on every device, we won't need a separate mobile version of the site".

User is "a person who uses or wants to use hosting and is identified by the system (logged in)".

User includes:
    repo-s? as Repository,
    URN as "a unique identifier of itself, for example urn:github:526301",
    authTokens as "a list of auth tokens to each auth provider the user connected to, e.g., Google, Facebook, etc.",
    balance as "amount of money available, can be stored as integer number of cents".

Anonymous is "a person who is not identified in the system (not logged in). He can actually have a User account in our System, but we can't tell it until he logs in".

FrontPage is "a front page of Thindeck for Anonymous which contains all the information about pricing, 'how it works', etc.".

:UC9.1 is specified.
:UC9.1 is a should.
UC9.1 where Anonymous (a anonymous) explores thindeck:
    1. The anonymous reads FrontPage(a frontPage);
    2. The anonymous "reads the stats page containing our runtime stats, similar to https://status.github.com/";
    3. The anonymous "reads our terms page including all the legal wordings".

:UC9.2 is specified.
:UC9.2 is a must.
UC9.2 where Anonymous (a anonymous) signs up:
    1. The anonymous "initiates sign in via one of OAuth providers from this list: Google Plus, Facebook, Github, or Twitter.";
    2. The system "requests permission from the OAuth provider chosen by the anonymous";
    3. The system creates User(a user);
    4. The system "adds $5 to the user.balance";
    5. The anonymous logs in.
UC9.2/2 when "a user is already signed up":
    1. The anonymous logs in.
UC9.2/2 when "an OAuth provider denied access":
    1. Fail since "Not authorized by chosen OAuth provider".

:UC9.3 is specified.
:UC9.3 is a must.
UC9.3 where Anonymous (a anonymous) logs in using User(a user):
    1. The system "from now on treats the anonymous as a User".

:UC11 is specified.
:UC11 is a must.
UC11 where User (a user) logs out:
    1. The system "from now on treats the user as anonymous and displays a public page".

Repository is "a local copy of files and folders being pulled every 5 minutes from some remote source".
Repository needs:
    name as "a unique name of the repo in user's account",
    deployment-? as Deployment,
    dockerFile as "Docker file",
    manifest as Manifest.

GitRepository is Repository.
GitRepository is "connected to a remote git (github) repository".
GitRepository includes:
    uri as "a non-ambiguous descriptor of a repo, for example ssh://git@github:yegor256/thindeck.git",
    key-? as "a private SSH key, see http://en.wikipedia.org/wiki/Public-key_cryptography".

SvnRepository is Repository.
SvnRepository is "connected to a remote subversion repository".
SvnRepository includes:
    uri as "a non-ambiguous descriptor of a repo, for example ssh://git@github:yegor256/thindeck.git",
    userName-? as "credentials used to read files from the repository",
    password-? as "credentials used to read files from the repository".

FtpRepository is Repository.
FtpRepository is "connected to a remote FTP server".
FtpRepository includes:
    uri as "a URL containing credentials valid to connect to FTP server, for example ftp://user:password@ftpserver/url-path".

DropboxRepository is Repository.
DropboxRepository is "connected to a shared Dropbox folder".
DropboxRepository includes: apiKey as "Dropbox specific connection information".

AmazonSthreeRepository is Repository.
AmazonSthreeRepository is "connected to an Amazon S3 file storage".
AmazonSthreeRepository includes: apiKey as "Amazon S3 specific connection information".

GoogleDriveRepository is Repository.
GoogleDriveRepository is "connected to a Google Drive storage".
GoogleDriveRepository includes: apiKey as "Google Drive specific connection information".

Deployment is "a summary statistics of Containers related to a Repository, with their statuses and text logs".

Deployment includes:
    container-s as Container,
    state as "one from the list: building, running",
    hourlyUsage-s? as HourlyUsage.

Container is "a virtual operating system running a Repository".

HourlyUsage is "an atomic track record of the usage of resources".
HourlyUsage includes:
    container as Container,
    hours as "a calendar hour, for example: 2014-05-02T18",
    cpuSeconds as "how many seconds our CPU spent working with the container during this hour.
    Can easily be over 3600, since we may have multiple CPU's working with the container",
    bytesIn as "an integer number of bytes came in the container",
    bytesOut as "an integer number of bytes came out of the container".

Manifest is "a YAML configuration file, stored in the repository, and
    includes a) list of domain names, b) list of open ports.".

UC1/1 when "repo already exists":
    1. Fail since "a message that the repository exists already in his account".

:UC2 is specified.
:UC2 is a must.
UC2 where User registers Repository:
    1. The user "enters a new unique name of the repository, its URI and an optional SSH key and confirms entered data";
    2. The system "adds the Repository and displays it in the list of other repositories in the user account".

UC2/1 when "data is incorrect":
    1. Fail since "repository cannot be registered".

:UC3 is specified.
:UC3 is a must.
UC3 where Repository deploys itself:
    "We fetch the repository every five minutes and check the difference
    between existing source code and the latest version. If there are
    any changes, we stop its Docker container, and start a new one with
    the latest version of the source code. Besides Dockerfile, which is used
    for the Docker container, we should look for a Manifest of the repository.
    According to the information in the Manifest we should configure the
    container after its start. While the repository is used, we should
    track its CPU and traffic consumption, and assign to its owner".
UC3/PERF must "each thindeck server should be able to host 4 actively working
    containers inside it, altogether handling 3M hits and 200 Gb of traffic
    per month, or 100K and 6.6 Gb per day".

:UC4 is specified.
:UC4 is a must.
UC4 where User reads deployment logs using Repository(a repo):
    1. The system lists Deployment(a deployments) "all deployments of the repo";
    2. The system "displays a list of deployments that has already been executed";
    3. The user "chooses a deployment and initiates viewing its log";
    4. The system "displays a log for the chosen deployment".

:UC5 is specified.
:UC5 is a must.
UC5 where User(a user) reads usage stats using Repository(a repo):
    1. The user "selects a time interval, like: last 7 days, last month, custom (from date, to date)";
    2. The system "reads HourlyUsage records corresponding to the repo within specified time interval";
    3. The system "shows the user a table with these columns: Container (id), Inbound traffic (Gb),
    Outbound traffic (Gb), CPU time (min), Cost ($). Each table row corresponds to a container.
    Last row contains totals by all containers. The values in the table are usage stats by container
    within specified time interval".

:UC6 is specified.
:UC6 is a must.
UC6 where User compensates usage of Repository:
    "The user adds funds to his account, when it goes to a negative value.
    Funds can be added through PayPal only".

UC6/UX Payment system must "be, in order of importance, 1) instant, 2) world-wide acceptable, 
3) supporting VISA and MasterCard, 4) secure".

:UC7 is specified.
:UC7 is a must.
UC7 where User terminates Repository:
    "The user just removes the repository and we immediately terminate
    the Docker container, close all ports and stop routing domain names.
    This operation is irreversible".
yegor256 commented 10 years ago

I can't reproduce the bug with this text. When I enter it into demo.requs.org - it works just fine. Can you post your full Maven output here?

kikec commented 10 years ago

OK, but tell me how to do it. I only get maven output in cmd. Don't see any output files...

yegor256 commented 10 years ago

Nope, I'm talking about console output. The text you see in the command line output. You posted a part of it above (as an image). I need to see it as a text, since the image doesn't show the entire text

kikec commented 10 years ago

OK. However now I cannot get same error, but some other, please see:

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Marko>cd Thindeck

C:\Documents and Settings\Marko\Thindeck>mvn clean install -Pqulice
[INFO] Scanning for projects...
[INFO]
[INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethrea
ded.SingleThreadedBuilder with a thread count of 1
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building thindeck 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ thindeck ---
[INFO] Deleting C:\Documents and Settings\Marko\Thindeck\target
[INFO]
[INFO] --- buildnumber-maven-plugin:1.2:create (jcabi-build-number) @ thindeck -
--
[INFO] Checking for local modifications: skipped.
[INFO] Updating project files from SCM: skipped.
[INFO] ShortRevision tag detected. The value is '7'.
[INFO] Executing: cmd.exe /X /C "git rev-parse --verify --short=7 HEAD"
[INFO] Working directory: C:\Documents and Settings\Marko\Thindeck
[INFO] Storing buildNumber: null at timestamp: 1402002623703
[INFO] ShortRevision tag detected. The value is '7'.
[INFO] Executing: cmd.exe /X /C "git rev-parse --verify --short=7 HEAD"
[INFO] Working directory: C:\Documents and Settings\Marko\Thindeck
[INFO] Storing buildScmBranch: UNKNOWN_BRANCH
[INFO]
[INFO] --- requs-maven-plugin:1.10.1:compile (default) @ thindeck ---
log4j:WARN No appenders could be found for logger (org.jboss.logging).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more in
fo.
[ERROR] JSR-303 validator failed to initialize: Unable to instantiate Configurat
ion. (see http://www.jcabi.com/jcabi-aspects/jsr-303.html)
[INFO] jcabi-aspects 0.15/1409f87 started new daemon thread jcabi-loggable for w
atching of @Loggable annotated methods
[INFO] output directory "C:\Documents and Settings\Marko\Thindeck\target\requs"
created
[INFO] #load(): 59 attribs loaded from 72 URL(s) in 109ms: ["Ant-Version", "Arch
iver-Version", "Bnd-LastModified", "Build-Jdk", "Build-Timestamp", "Built-By", "
Bundle-ActivationPolicy", "Bundle-Activator", "Bundle-Copyright", "Bundle-Descri
ption", "Bundle-DocURL", "Bundle-License", "Bundle-ManifestVersion", "Bundle-Nam
e", "Bundle-RequiredExecutionEnvironment", "Bundle-SymbolicName", "Bundle-Vendor
", "Bundle-Version", "Created-By", "DynamicImport-Package", "Eclipse-ExtensibleA
PI", "Export-Package", "Extension-Name", "Ignore-Package", "Implementation-Build
", "Implementation-Title", "Implementation-URL", "Implementation-Vendor", "Imple
mentation-Vendor-Id", "Implementation-Version", "Import-Package", "Include-Resou
rce", "JCabi-Build", "JCabi-Date", "JCabi-Version", "Java-Vendor", "Java-Version
", "Main-Class", "Manifest-Version", "Originally-Created-By", "Os-Arch", "Os-Nam
e", "Os-Version", "Package", "Project-Name", "Require-Bundle", "Requs-Date", "Re
qus-Revision", "Requs-Version", "Scm-Connection", "Scm-Revision", "Scm-Url", "Sp
ecification-Title", "Specification-Vendor", "Specification-Version", "Tool", "X-
Compile-Source-JDK", "X-Compile-Target-JDK", "url"]
[INFO] source file: C:\Documents and Settings\Marko\Thindeck\src\main\requs\app.
req
[INFO] source file: C:\Documents and Settings\Marko\Thindeck\src\main\requs\main
.req
[INFO] source file: C:\Documents and Settings\Marko\Thindeck\src\main\requs\visi
on.req
[INFO] XeFacet.Wrap(origin=Aggregate()) done
[INFO] XeFacet.Wrap(origin=AntlrFacet()) done
[INFO] Transform(cleanup/lost-steps.xsl) done
[INFO] Transform(cleanup/lost-methods.xsl) done
[INFO] Transform(cleanup/duplicate-signatures.xsl) done
[INFO] Transform(cleanup/duplicate-method-signatures.xsl) done
[INFO] Transform(cleanup/duplicate-method-objects.xsl) done
[INFO] Transform(cleanup/duplicate-method-bindings.xsl) done
[INFO] Transform(cleanup/incomplete-step-object.xsl) done
[INFO] Transform(cleanup/incomplete-step-signature.xsl) done
[INFO] Transform(cleanup/incomplete-step-result.xsl) done
[INFO] Transform(cleanup/incomplete-binding.xsl) done
[INFO] Transform(seal-methods.xsl) done
[INFO] Transform(sanity/signatures-check.xsl) done
[INFO] Transform(sanity/types-check.xsl) done
[INFO] Transform(sanity/seals-check.xsl) done
[INFO] Transform(methods-in-markdown.xsl) done
[INFO] Transform(pages-in-html.xsl) done
[INFO] Transform(count-ambiguity.xsl) done
[INFO] Transform(find-tbds.xsl) done
[INFO] XeFacet.Wrap(origin=Rules()) done
[INFO] XeFacet.Wrap(origin=org.requs.Compiler$1@a97164) done
[INFO] XeFacet.Wrap(origin=XeFacet.Fixed()) done
[INFO] compiled and saved to C:\Documents and Settings\Marko\Thindeck\target\req
us
[INFO]
[INFO] --- qulice-maven-plugin:0.8.1:check (jcabi-check) @ thindeck ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 35.922 s
[INFO] Finished at: 2014-06-05T23:10:51+01:00
[INFO] Final Memory: 14M/33M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.qulice:qulice-maven-plugin:0.8.1:check (jcabi
-check) on project thindeck: Execution jcabi-check of goal com.qulice:qulice-mav
en-plugin:0.8.1:check failed: Illegal character in authority at index 7: file://
C:\Documents and Settings\Marko\Thindeck\target\classes -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e swit
ch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please rea
d the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutio
nException
'cmd' is not recognized as an internal or external command,
operable program or batch file.
C:\Documents and Settings\Marko\Thindeck>
yegor256 commented 10 years ago

@kikec that's a different problem. it is fixed already in 9458afc, please pull recent changes from master and try again

kikec commented 10 years ago

@yegor256 OK. I got it. here is new version. Now I managed to provoke mentioned error message:

 [ERROR] 9153:XPATH "/spec/methods/method[id='UC5']";STRICT "1";ADDIF "
steps";XPATH "/spec/methods/method[id='UC5']";
[ERROR] 9157:XPATH "steps[not(step/number=3)]";ADD "step";ADD "number";SET "3";X
PATH "/spec/methods/method[id='UC5']/steps/step[number=3]";
[ERROR] 9162:STRICT "1";ADDIF "mentioned";STRICT "1";ADD "where";SET "538";XPATH
 "/spec/methods/method[id='UC5']/steps/step[number=3]";
[ERROR] 9168:STRICT "1";ADD "object";SET "system";XPATH "/spec/methods/method[id
='UC5']/steps/step[number=3]";
[ERROR] 9172:STRICT "1";ADD "signature";SET ""shows the user a table with t
hese columns: Container (id), Inbound traffic (Gb),
    Outbound traffi
c (Gb), CPU time (min), Cost ($). Each table row corresponds to a container.&#13
;
    Last row contains totals by all containers. The values in the table ar
e usage stats by container
    within specified time interval"";
[ERROR] 9175:XPATH "/spec";STRICT "1";ADDIF "methods";XPATH "/spec/methods[not(m
ethod/id='UC6') ]";
[ERROR] 9179:ADD "method";ADD "id";SET "UC6";XPATH "/spec/methods/method[id=&apo
s;UC6']";STRICT "1";
[ERROR] 9184:ADDIF "attributes";XPATH "/spec/methods/method[id='UC6']/
attributes[not(attribute='specified')]";
[ERROR] 9186:ADD "attribute";SET "specified";XPATH "/spec/methods/method[id=&apo
s;UC6']/attributes/attribute[.='specified']";
[ERROR] 9189:STRICT "1";ATTR "seal", "";XPATH "/spec/methods/method[id='UC6
']";STRICT "1";
[ERROR] 9193:ADDIF "mentioned";STRICT "1";ADD "where";SET "543";XPATH "/spec";ST
RICT "1";ADDIF "methods";
[ERROR] 9200:XPATH "/spec/methods[not(method/id='UC6') ]";ADD "method"
;ADD "id";SET "UC6";
[ERROR] 9204:XPATH "/spec/methods/method[id='UC6']";STRICT "1";ADDIF "
attributes";XPATH "/spec/methods/method[id='UC6']/attributes[not(attri
bute='must')]";
[ERROR] 9208:ADD "attribute";SET "must";XPATH "/spec/methods/method[id='UC6
']/attributes/attribute[.='must']";
[ERROR] 9211:STRICT "1";ATTR "seal", "";XPATH "/spec/methods/method[id='UC6
']";STRICT "1";
[ERROR] 9215:ADDIF "mentioned";STRICT "1";ADD "where";SET "544";XPATH "/spec";ST
RICT "1";ADDIF "methods";
[ERROR] 9222:XPATH "/spec/methods[not(method/id='UC6') ]";ADD "method"
;ADD "id";SET "UC6";
[ERROR] 9226:XPATH "/spec/methods/method[id='UC6']";STRICT "1";ADDIF "
mentioned";STRICT "1";
[ERROR] 9230:ADD "where";SET "545";XPATH "/spec";STRICT "1";ADDIF "types";XPATH
"/spec/types[not(type/name='User')]";
[ERROR] 9236:ADD "type";ADD "name";SET "User";XPATH "/spec/types/type[name=&apos
;User']";STRICT "1";
[ERROR] 9241:ADDIF "mentioned";STRICT "1";ADD "where";SET "545";XPATH "/spec/met
hods/method[id='UC6']";
[ERROR] 9246:STRICT "1";ADDIF "bindings";UP;XPATH "bindings[not(binding[name=&ap
os;_self' and type='User'])]";
[ERROR] 9250:ADD "binding";ADD "name";SET "_self";UP;ADD "type";SET "User";XPATH
 "/spec/methods/method[id='UC6']";
[ERROR] 9257:STRICT "1";ADD "object";SET "_self";XPATH "/spec/methods/method[id=
'UC6']";
[ERROR] 9261:STRICT "1";ADD "signature";SET "compensates usage";XPATH "/spec/met
hods/method[id='UC6']";
[ERROR] 9265:STRICT "1";ADDIF "bindings";UP;XPATH "bindings[not(binding[name=&ap
os;_arg0' and type='Repository'])]";
[ERROR] 9269:ADD "binding";ADD "name";SET "_arg0";UP;ADD "type";SET "Repository"
;XPATH "/spec/methods/method[id='UC6']";
[ERROR] 9276:STRICT "1";ADDIF "args";ADD "arg";SET "_arg0";XPATH "/spec/methods/
method[id='UC6']";
[ERROR] 9281:STRICT "1";ADDIF "info";ADD "informal";SET "The user adds funds to
his account, when it goes to a negative value.
    Funds can be added t
hrough chosen payment system Stripe";
[ERROR] 9285:XPATH "/spec";STRICT "1";ADDIF "methods";XPATH "/spec/methods[not(m
ethod/id='UC7') ]";
[ERROR] 9289:ADD "method";ADD "id";SET "UC7";XPATH "/spec/methods/method[id=&apo
s;UC7']";STRICT "1";
[ERROR] 9294:ADDIF "attributes";XPATH "/spec/methods/method[id='UC7']/
attributes[not(attribute='specified')]";
[ERROR] 9296:ADD "attribute";SET "specified";XPATH "/spec/methods/method[id=&apo
s;UC7']/attributes/attribute[.='specified']";
[ERROR] 9299:STRICT "1";ATTR "seal", "";XPATH "/spec/methods/method[id='UC7
']";STRICT "1";
[ERROR] 9303:ADDIF "mentioned";STRICT "1";ADD "where";SET "552";XPATH "/spec";ST
RICT "1";ADDIF "methods";
[ERROR] 9310:XPATH "/spec/methods[not(method/id='UC7') ]";ADD "method"
;ADD "id";SET "UC7";
[ERROR] 9314:XPATH "/spec/methods/method[id='UC7']";STRICT "1";ADDIF "
attributes";XPATH "/spec/methods/method[id='UC7']/attributes[not(attri
bute='must')]";
[ERROR] 9318:ADD "attribute";SET "must";XPATH "/spec/methods/method[id='UC7
']/attributes/attribute[.='must']";
[ERROR] 9321:STRICT "1";ATTR "seal", "";XPATH "/spec/methods/method[id='UC7
']";STRICT "1";
[ERROR] 9325:ADDIF "mentioned";STRICT "1";ADD "where";SET "553";XPATH "/spec";ST
RICT "1";ADDIF "methods";
[ERROR] 9332:XPATH "/spec/methods[not(method/id='UC7') ]";ADD "method"
;ADD "id";SET "UC7";
[ERROR] 9336:XPATH "/spec/methods/method[id='UC7']";STRICT "1";ADDIF "
mentioned";STRICT "1";
[ERROR] 9340:ADD "where";SET "554";XPATH "/spec";STRICT "1";ADDIF "types";XPATH
"/spec/types[not(type/name='User')]";
[ERROR] 9346:ADD "type";ADD "name";SET "User";XPATH "/spec/types/type[name=&apos
;User']";STRICT "1";
[ERROR] 9351:ADDIF "mentioned";STRICT "1";ADD "where";SET "554";XPATH "/spec/met
hods/method[id='UC7']";
[ERROR] 9356:STRICT "1";ADDIF "bindings";UP;XPATH "bindings[not(binding[name=&ap
os;_self' and type='User'])]";
[ERROR] 9360:ADD "binding";ADD "name";SET "_self";UP;ADD "type";SET "User";XPATH
 "/spec/methods/method[id='UC7']";
[ERROR] 9367:STRICT "1";ADD "object";SET "_self";XPATH "/spec/methods/method[id=
'UC7']";
[ERROR] 9371:STRICT "1";ADD "signature";SET "terminates";XPATH "/spec/methods/me
thod[id='UC7']";
[ERROR] 9375:STRICT "1";ADDIF "info";ADD "informal";SET "The user just removes t
he repository and we immediately terminate
    the Docker container, cl
ose all ports and stop routing domain names.
    This operation is irre
versible";
[ERROR] 9379:XPATH "/spec";STRICT "1";ADDIF "types";XPATH "/spec/types[not(type/
name='System')]";
[ERROR] 9383:ADD "type";ADD "name";SET "System";XPATH "/spec/types/type[name=&ap
os;System']";
[ERROR] 9387:STRICT "1";ADDIF "mentioned";STRICT "1";ADD "where";SET "559";XPATH
 "/spec/types/type[name='System']";
[ERROR] 9393:STRICT "1";ADDIF "info";ADD "informal";SET "a web hosting that depl
oys itself";XPATH "/spec";
[ERROR] 9398:STRICT "1";ADDIF "types";XPATH "/spec/types[not(type/name='Mea
nTimeBetweenFailures')]";
[ERROR] 9401:ADD "type";ADD "name";SET "MeanTimeBetweenFailures";XPATH "/spec/ty
pes/type[name='MeanTimeBetweenFailures']";
[ERROR] 9405:STRICT "1";ADDIF "mentioned";STRICT "1";ADD "where";SET "561";XPATH
 "/spec/types/type[name='MeanTimeBetweenFailures']";
[ERROR] 9411:STRICT "1";ADDIF "info";ADD "informal";SET "time that System spends
 in continuous up time between one failure and the next failure.
MTBF i
s a measure of System reliability via continuous operation and therefore the MTB
F target should be set at the highest achievable number. Users will not be notif
ied of failures or down time";
[ERROR] 9415:XPATH "/spec";STRICT "1";ADDIF "types";XPATH "/spec/types[not(type/
name='MeanTimeToRecovery')]";
[ERROR] 9419:ADD "type";ADD "name";SET "MeanTimeToRecovery";XPATH "/spec/types/t
ype[name='MeanTimeToRecovery']";
[ERROR] 9423:STRICT "1";ADDIF "mentioned";STRICT "1";ADD "where";SET "564";XPATH
 "/spec/types/type[name='MeanTimeToRecovery']";
[ERROR] 9429:STRICT "1";ADDIF "info";ADD "informal";SET "time that System spends
 in unscheduled down time until recovery as a result of failure.
MTTR i
s a measure of System reliability via service recovery and therefore the MTTR ta
rget should be set at the lowest achievable number";
[ERROR] 9433:XPATH "/spec";STRICT "1";ADDIF "methods";XPATH "/spec/methods[not(m
ethod/id='UC1') ]";
[ERROR] 9437:ADD "method";ADD "id";SET "UC1";XPATH "/spec/methods/method[id=&apo
s;UC1']";STRICT "1";
[ERROR] 9442:ADDIF "attributes";XPATH "/spec/methods/method[id='UC1']/
attributes[not(attribute='specified')]";
[ERROR] 9444:ADD "attribute";SET "specified";XPATH "/spec/methods/method[id=&apo
s;UC1']/attributes/attribute[.='specified']";
[ERROR] 9447:STRICT "1";ATTR "seal", "";XPATH "/spec/methods/method[id='UC1
']";STRICT "1";
[ERROR] 9451:ADDIF "mentioned";STRICT "1";ADD "where";SET "567";XPATH "/spec";ST
RICT "1";ADDIF "methods";
[ERROR] 9458:XPATH "/spec/methods[not(method/id='UC1') ]";ADD "method"
;ADD "id";SET "UC1";
[ERROR] 9462:XPATH "/spec/methods/method[id='UC1']";STRICT "1";ADDIF "
attributes";XPATH "/spec/methods/method[id='UC1']/attributes[not(attri
bute='must')]";
[ERROR] 9466:ADD "attribute";SET "must";XPATH "/spec/methods/method[id='UC1
']/attributes/attribute[.='must']";
[ERROR] 9469:STRICT "1";ATTR "seal", "";XPATH "/spec/methods/method[id='UC1
']";STRICT "1";
[ERROR] 9473:ADDIF "mentioned";STRICT "1";ADD "where";SET "568";XPATH "/spec";ST
RICT "1";ADDIF "methods";
[ERROR] 9480:XPATH "/spec/methods[not(method/id='UC1') ]";ADD "method"
;ADD "id";SET "UC1";
[ERROR] 9484:XPATH "/spec/methods/method[id='UC1']";STRICT "1";ADDIF "
mentioned";STRICT "1";
[ERROR] 9488:ADD "where";SET "569";XPATH "/spec";STRICT "1";ADDIF "types";XPATH
"/spec/types[not(type/name='User')]";
[ERROR] 9494:ADD "type";ADD "name";SET "User";XPATH "/spec/types/type[name=&apos
;User']";STRICT "1";
[ERROR] 9499:ADDIF "mentioned";STRICT "1";ADD "where";SET "569";XPATH "/spec/met
hods/method[id='UC1']";
[ERROR] 9504:STRICT "1";ADDIF "bindings";UP;XPATH "bindings[not(binding[name=&ap
os;_self' and type='User'])]";
[ERROR] 9508:ADD "binding";ADD "name";SET "_self";UP;ADD "type";SET "User";XPATH
 "/spec/methods/method[id='UC1']";
[ERROR] 9515:STRICT "1";ADDIF "bindings";UP;XPATH "bindings[not(binding[name=&ap
os;user' and type='User'])]";
[ERROR] 9519:ADD "binding";ADD "name";SET "user";UP;ADD "type";SET "User";XPATH
"/spec/methods/method[id='UC1']";
[ERROR] 9526:STRICT "1";ADD "object";SET "user";XPATH "/spec/methods/method[id=&
apos;UC1']";STRICT "1";
[ERROR] 9531:ADD "signature";SET "hosts";XPATH "/spec/methods/method[id='UC
1']";STRICT "1";
[ERROR] 9535:ADDIF "bindings";UP;XPATH "bindings[not(binding[name='repo&apo
s; and type='Repository'])]";
[ERROR] 9538:ADD "binding";ADD "name";SET "repo";UP;ADD "type";SET "Repository";
XPATH "/spec/methods/method[id='UC1']";
[ERROR] 9545:STRICT "1";ADD "result";SET "repo";XPATH "/spec/methods/method[id=&
apos;UC1']";STRICT "1";
[ERROR] 9550:ADDIF "steps";XPATH "/spec/methods/method[id='UC1']";XPAT
H "steps[not(step/number=1)]";
[ERROR] 9553:ADD "step";ADD "number";SET "1";XPATH "/spec/methods/method[id=&apo
s;UC1']/steps/step[number=1]";
[ERROR] 9557:STRICT "1";ADDIF "mentioned";STRICT "1";ADD "where";SET "570";XPATH
 "/spec/methods/method[id='UC1']/steps/step[number=1]";
[ERROR] 9563:STRICT "1";ADD "object";SET "user";XPATH "/spec/methods/method[id=&
apos;UC1']/steps/step[number=1]";
[ERROR] 9567:STRICT "1";ADD "signature";SET "registers";XPATH "/spec/methods/met
hod[id='UC1']/steps/step[number=1]";
[ERROR] 9571:STRICT "1";ADD "result";SET "repo";XPATH "/spec/methods/method[id=&
apos;UC1']";STRICT "1";
[ERROR] 9576:ADDIF "steps";XPATH "/spec/methods/method[id='UC1']";XPAT
H "steps[not(step/number=2)]";
[ERROR] 9579:ADD "step";ADD "number";SET "2";XPATH "/spec/methods/method[id=&apo
s;UC1']/steps/step[number=2]";
[ERROR] 9583:STRICT "1";ADDIF "mentioned";STRICT "1";ADD "where";SET "571";XPATH
 "/spec/methods/method[id='UC1']/steps/step[number=2]";
[ERROR] 9589:STRICT "1";ADD "object";SET "repo";XPATH "/spec/methods/method[id=&
apos;UC1']/steps/step[number=2]";
[ERROR] 9593:STRICT "1";ADD "signature";SET "deploys itself";XPATH "/spec/method
s/method[id='UC1']";
[ERROR] 9597:STRICT "1";ADDIF "steps";XPATH "/spec/methods/method[id='UC1&a
pos;]";XPATH "steps[not(step/number=3)]";
[ERROR] 9601:ADD "step";ADD "number";SET "3";XPATH "/spec/methods/method[id=&apo
s;UC1']/steps/step[number=3]";
[ERROR] 9605:STRICT "1";ADDIF "mentioned";STRICT "1";ADD "where";SET "572";XPATH
 "/spec/methods/method[id='UC1']/steps/step[number=3]";
[ERROR] 9611:STRICT "1";ADD "object";SET "user";XPATH "/spec/methods/method[id=&
apos;UC1']/steps/step[number=3]";
[ERROR] 9615:STRICT "1";ADD "signature";SET "reads deployment logs";XPATH "/spec
/methods/method[id='UC1']/steps/step[number=3]";
[ERROR] 9619:STRICT "1";ADDIF "args";ADD "arg";SET "repo";XPATH "/spec/methods/m
ethod[id='UC1']";
[ERROR] 9624:STRICT "1";ADDIF "steps";XPATH "/spec/methods/method[id='UC1&a
pos;]";XPATH "steps[not(step/number=4)]";
[ERROR] 9628:ADD "step";ADD "number";SET "4";XPATH "/spec/methods/method[id=&apo
s;UC1']/steps/step[number=4]";
[ERROR] 9632:STRICT "1";ADDIF "mentioned";STRICT "1";ADD "where";SET "573";XPATH
 "/spec/methods/method[id='UC1']/steps/step[number=4]";
[ERROR] 9638:STRICT "1";ADD "object";SET "user";XPATH "/spec/methods/method[id=&
apos;UC1']/steps/step[number=4]";
[ERROR] 9642:STRICT "1";ADD "signature";SET "reads usage stats";XPATH "/spec/met
hods/method[id='UC1']/steps/step[number=4]";
[ERROR] 9646:STRICT "1";ADDIF "args";ADD "arg";SET "repo";XPATH "/spec/methods/m
ethod[id='UC1']";
[ERROR] 9651:STRICT "1";ADDIF "steps";XPATH "/spec/methods/method[id='UC1&a
pos;]";XPATH "steps[not(step/number=5)]";
[ERROR] 9655:ADD "step";ADD "number";SET "5";XPATH "/spec/methods/method[id=&apo
s;UC1']/steps/step[number=5]";
[ERROR] 9659:STRICT "1";ADDIF "mentioned";STRICT "1";ADD "where";SET "574";XPATH
 "/spec/methods/method[id='UC1']/steps/step[number=5]";
[ERROR] 9665:STRICT "1";ADD "object";SET "user";XPATH "/spec/methods/method[id=&
apos;UC1']/steps/step[number=5]";
[ERROR] 9669:STRICT "1";ADD "signature";SET "compensates usage";XPATH "/spec/met
hods/method[id='UC1']/steps/step[number=5]";
[ERROR] 9673:STRICT "1";ADDIF "args";ADD "arg";SET "repo";XPATH "/spec/methods/m
ethod[id='UC1']";
[ERROR] 9678:STRICT "1";ADDIF "steps";XPATH "/spec/methods/method[id='UC1&a
pos;]";XPATH "steps[not(step/number=6)]";
[ERROR] 9682:ADD "step";ADD "number";SET "6";XPATH "/spec/methods/method[id=&apo
s;UC1']/steps/step[number=6]";
[ERROR] 9686:STRICT "1";ADDIF "mentioned";STRICT "1";ADD "where";SET "575";XPATH
 "/spec/methods/method[id='UC1']/steps/step[number=6]";
[ERROR] 9692:STRICT "1";ADD "object";SET "user";XPATH "/spec/methods/method[id=&
apos;UC1']/steps/step[number=6]";
[ERROR] 9696:STRICT "1";ADD "signature";SET "terminates";XPATH "/spec/methods/me
thod[id='UC1']/steps/step[number=6]";
[ERROR] 9700:STRICT "1";ADD "result";SET "repo";XPATH "/spec";STRICT "1";ADDIF "
methods";XPATH "/spec/methods[not(method/id='UC1') ]";
[ERROR] 9707:ADD "method";ADD "id";SET "UC1";XPATH "/spec/methods/method[id=&apo
s;UC1']";STRICT "1";
[ERROR] 9712:ADDIF "nfrs";STRICT "1";XPATH "/spec/methods/method[id='UC1&ap
os;]/nfrs[not(nfr/id='UX')]";
[ERROR] 9715:ADD "nfr";ADD "id";SET "UX";XPATH "/spec/methods/method[id='UC
1']/nfrs/nfr[id='UX']";
[ERROR] 9719:STRICT "1";ADDIF "info";ADD "informal";SET "be in English only";XPA
TH "/spec/methods/method[id='UC1']";
[ERROR] 9724:STRICT "1";ADDIF "mentioned";STRICT "1";ADD "where";SET "576";XPATH
 "/spec";STRICT "1";ADDIF "pages";
[ERROR] 9732:XPATH "/spec/pages[not(page/title='Vision') ]";ADD "page"
;ADD "title";SET "Vision";
[ERROR] 9736:XPATH "/spec/pages/page[title='Vision']";STRICT "1";ADDIF
 "info";ADD "informal";
[ERROR] 9740:SET "

Requirements providers are:

 * Yegor Bugaye
nko

Key success factors are:

 * High availability - much highe
r than anyone else can offer.
 * Low cost - lower than anyone.
 * Easy (
re)deployment - a unique 'pull' deployment mechanism.
 * Simple co
ntrol panel - one form and your site is ready in 5 minutes.".

";
[ERROR] 9741:XPATH "/spec/pages/page[title='Vision']";STRICT "1";ADDIF
 "mentioned";STRICT "1";
[ERROR] 9745:ADD "where";SET "590";XPATH "/spec";ADDIF "errors";ADD "error";ATTR
 "type", "syntax";ATTR "line", "367";
[ERROR] 9752:ATTR "pos", "7";SET "mismatched input 'Payment' expecting
 'must'";
[ERROR] 9754:UP;ADD "error";ATTR "type", "syntax";ATTR "line", "549";ATTR "pos",
 "7";SET "mismatched input 'Payment' expecting 'must'";
[ERROR] 9760:UP;: directive #3734: STRICT "1": 2 current nodes [slots/slot, slot
s/slot] while strictly 1 expected
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e swit
ch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please rea
d the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutio
nException
'cmd' is not recognized as an internal or external command,
operable program or batch file.
C:\Documents and Settings\Marko\Thindeck>
yegor256 commented 10 years ago

@kikec indeed, now it looks good. Could you please post a bigger portion of text? The cause of the problem is higher in the log.

kikec commented 10 years ago

@yegor256 this is the biggest log that I could copy. Please tell me how to catch bigger blog.

yegor256 commented 10 years ago

@kikec see http://stackoverflow.com/questions/1740876/more-lines-in-command-window

kikec commented 10 years ago

Thanks, disregard previous comment if you got it in mail. I deleted it here. Sending good version in cuople of minutes.

kikec commented 10 years ago

@yegor256 hm, now I have problem, I created log of more than 600.000 chars, and maximum for comment is 262.144. Can I send it to you by e-mail or is it possible to insert it as a file here?

yegor256 commented 10 years ago

you can ZIP it and attach to the ticket

kikec commented 10 years ago

@yegor256 When I try to attach, ticket says: "Unfortunately, we don't support that file type. Try again with a PNG, GIF, or JPG." How to attach zip file?

yegor256 commented 10 years ago

send it to me by email: yegor@tpc2.com

kikec commented 10 years ago

OK, I sent it.

kikec commented 10 years ago

@yegor256 Hi, any help there? I'm still getting the same message, and I'm unable to pull request from local.

yegor256 commented 10 years ago

I can't reproduce the problem at demo.requs.org. Can you please post the requs syntax that leads to the problem?

kikec commented 10 years ago

It gives this message every time, even with no change on file main.req. This is the last one on which I got this error:

System is "a web hosting that deploys itself".

MeanTimeBetweenFailures is "time that System spends in continuous
up time between one failure and the next failure.
MTBF is a measure of System reliability via continuous operation
and therefore the MTBF target should be set at the highest achievable number.
Users will not be notified of failures or down time".

MeanTimeToRecovery is "time that System spends in unscheduled down
time until recovery as a result of failure.
MTTR is a measure of System reliability via service recovery and therefore
the MTTR target should be set at the lowest achievable number".

MainPage is "a main thindeck page for (logged-in) User-s. @todo #142
I assumed there will be a main page. We should
define what functional blocks will this page contain, e.g., my repositories,
my profile, my balance, etc.".

:UC1 is specified.
:UC1 is a must.
UC1 where User (a user) goes through repository life cycle:
    1. The system lists Repository(a repoList) "of the current user";
    2. The user configures virtual machine using the repo;
    3. The user registers Repository(a repo);
    4. The system runs of Deployment(a deployment);
    5. The user reads deployment logs of the repo;
    6. The user reads usage stats of the repo;
    7. The user compensates usage of the repo;
    8. The user terminates the repo.
UC1/UX must "be in English only".
UC1/WEBDESIGN must "be 'responsive', see
http://en.wikipedia.org/wiki/Responsive_web_design . Since all thindeck
site pages will look good on every device, we won't need a separate
mobile version of the site".
UC1/STATELESS must "all user repositories must be 100% stateless.
We should inform users that we will be constantly changing the number
of running containers. We may terminate any container at any moment.
This means that the software inside the container (repository) should
NOT keep any data persistent. They should use other services for
persistence, like Amazon DynamoDB, etc".

User is "a person who uses or wants to use hosting and is identified
by the system (logged in)".

User includes:
    repo-s? as Repository,
    URN as "a unique identifier of itself, for example urn:github:526301",
    authTokens as "a list of auth tokens to each auth provider the
    user connected to, e.g., Google, Facebook, etc.",
    balance as "amount of money available, can be stored as
    integer number of cents".

Anonymous is "a person who is not identified in the system (not logged in).
He can actually have a User account in our System, but we can't tell
it until he logs in".

FrontPage is "a front page of Thindeck for Anonymous which contains all
the information about pricing, 'how it works', etc.".

:UC9.1 is specified.
:UC9.1 is a should.
UC9.1 where Anonymous (a anonymous) explores thindeck:
    1. The anonymous reads FrontPage(a frontPage);
    2. The anonymous "reads the stats page containing our runtime stats,
    similar to https://status.github.com/";
    3. The anonymous "reads our terms page including all the legal wordings".

:UC9.2 is specified.
:UC9.2 is a must.
UC9.2 where Anonymous (a anonymous) signs up:
    1. The anonymous "initiates sign in via one of OAuth providers from
    this list: Google Plus, Facebook, Github, or Twitter.";
    2. The system "requests permission from the OAuth provider
    chosen by the anonymous";
    3. The system creates User(a user);
    4. The system "adds $5 to the user.balance";
    5. The anonymous logs in.

:UC9.3 is specified.
:UC9.3 is a must.
UC9.3 where Anonymous (a anonymous) logs in using User(a user):
    1. The system "from now on treats the anonymous as a User".

:UC11 is specified.
:UC11 is a must.
UC11 where User (a user) logs out:
    1. The system "from now on treats the user as anonymous and
    displays a public page".

Repository is "a local copy of files and folders being pulled every
5 minutes from some remote source".
Repository needs:
    name as "a unique name of the repo in user's account",
    deployment-? as Deployment,
    dockerFile as DockerFile,
    manifest as Manifest.

GitRepository is Repository.
GitRepository is "connected to a remote git (github) repository".
GitRepository includes:
    uri as "a non-ambiguous descriptor of a repo,
    for example ssh://git@github:yegor256/thindeck.git",
    key-? as "a private SSH key,
    see http://en.wikipedia.org/wiki/Public-key_cryptography".

SvnRepository is Repository.
SvnRepository is "connected to a remote subversion repository".
SvnRepository includes:
    uri as "a non-ambiguous descriptor of a repo,
    for example ssh://git@github:yegor256/thindeck.git",
    userName-? as "credentials used to read files from the repository",
    password-? as "credentials used to read files from the repository".

FtpRepository is Repository.
FtpRepository is "connected to a remote FTP server".
FtpRepository includes:
    uri as "a URL containing credentials valid to connect to FTP server,
    for example ftp://user:password@ftpserver/url-path".

DropboxRepository is Repository.
DropboxRepository is "connected to a shared Dropbox folder".
DropboxRepository includes: apiKey as "Dropbox specific connection information".

AmazonSthreeRepository is Repository.
AmazonSthreeRepository is "connected to an Amazon S3 file storage".
AmazonSthreeRepository includes: apiKey as "Amazon S3 specific
connection information".

GoogleDriveRepository is Repository.
GoogleDriveRepository is "connected to a Google Drive storage".
GoogleDriveRepository includes: apiKey as "Google Drive specific
connection information".

Deployment is "a summary statistics of Containers related to a Repository,
with their statuses and text logs".

Deployment includes:
    container-s as Container,
    state as "one from the list: building, running",
    hourlyUsage-s? as HourlyUsage.

Application is "a running instance of user's code built from his Repository".

Container is "a virtual operating system running user's
application build from Repository".
Container includes: app as Application.

HourlyUsage is "an atomic track record of the usage of resources".
HourlyUsage includes:
    container as Container,
    hours as "a calendar hour, for example: 2014-05-02T18",
    cpuSeconds as "how many seconds our CPU spent working with
    the container during this hour.
    Can easily be over 3600, since we may have multiple CPU's working
    with the container",
    bytesIn as "an integer number of bytes came in the container",
    bytesOut as "an integer number of bytes came out of the container".

Manifest is "a YAML configuration file stored in the repository".
Manifest includes:
    domain-s? as "a unique name that identifies a website and
        may not exceed a total length of 253 ASCII characters
        in its textual representation",
    port-s? as "a 16-bit number that identifies a network port
        for the establishment of host-to-host connectivity".

DockerFile is "a configuration for building and starting Container-s".

:UC2 is specified.
:UC2 is a must.
UC2 where User registers Repository:
    1. The user "enters a new unique name of the repository, provides
    the data required for authorization,
    depending on the type of chosen repository, and confirms entered data";
    2. The system creates Repository(a repo);
    3. The system "displays a repo in the list of other repositories
    in the user account";
    4. The system deploys the repo;
    5. The system reads the repo "periodically (every 5 minutes) pulling
    the changes from repository remote source";
    6. The system redeploys the repo "If the system detected
    changes after last pull".

UC2.1 where User(a user) configures virtual machine using Repository(a repo):
    1. The user creates DockerFile(a dockerFile) "in which
    he configures containers that will host his running
    Application when the repository is deployed";
    2. The user updates the repo "by putting the docker file to its root".
UC2.1/ENVIRONMENT must "be Linux, because it is the most popular OS
for running web projects in".
UC2.1/LICENSING must "be open source or free, so that we avoid license costs".
UC2.1/PRODUCTSTATE must "be mature product that is currently supported,
because we need an up-to-date product that has
already proved to be reliable and usable".
UC2.1/ISOLATION must "provide full file system and network isolation,
so that user apps from different repositories will
know nothing about each other".
UC2.1/COPYONWRITE must "be implemented, to provide an optimal resources
utilization".
UC2.1/MEMORYLIMITS must "be implemented, to avoid memory overflow by one
of user apps".
UC2.1/CPUQUOTAS must "be implemented, because we want to track and limit
CPU time usage for billing purpose".
UC2.1/EASYCHANGE must "be implemented, to avoid templating or
manual configuration, so that changes to a container's file
system could be committed into a new image and re-used
to create more containers".
UC2.1/LOGGING must "provide real-time logging, to provide up-to-date
logs to our users, who may need them to analyze
their testing app instances in real time".

:UC2.2 is specified.
:UC2.2 is a must.
UC2.2 where System(a system) redeploys using Repository(a repo):
    1. The system deletes Container(a containers)
    "terminates all Docker containers of the repo";
    2. The system deploys the repo "using updated sources".

:UC2.3 is specified.
:UC2.3 is a must.
UC2.3 where System(a system) runs of Deployment(a deployment)
    "@todo #199 - move resource utilization tracking and
    charging of a user here":
    1. The system reads Container(a deployedContainers)
    "tracking load = [the amount of CPU seconds consumed per hour]
    by each deployment.container";
    2. The system creates Container(a newContainer)
    "if one of the deployedContainers.load goes above 3600 CPU seconds";
    3. The system deletes Container(an underloadedContainer)
    "if one of deployedContainers.load goes below 1800 CPU seconds".

:UC3 is specified.
:UC3 is a must.
UC3 where System(a system) deploys using Repository (a repo):
    1. The system "starts a new Docker container with
    the latest version of the source code, configuring it
    as defined in Dockerfile";
    2. The system "applies the configuration defined
    in Manifest file to the container after it is started";
    3. The system "tracks the usage of CPU time and traffic by the container".
UC3/PERF must "each thindeck server should be able to host 4 actively working
    containers inside it, altogether handling 3M hits and 200 Gb of traffic
    per month, or 100K and 6.6 Gb per day".

:UC4 is specified.
:UC4 is a must.
UC4 where User reads deployment logs using Repository(a repo):
    1. The system lists Deployment(a deployments)
    "all deployments of the repo";
    2. The system "displays a list of deployments
    that has already been executed";
    3. The user "chooses a deployment and initiates viewing its log";
    4. The system "displays a log for the chosen deployment".

:UC5 is specified.
:UC5 is a must.
UC5 where User(a user) reads usage stats using Repository(a repo):
    1. The user "selects a time interval, like:
    last 7 days, last month, custom (from date, to date)";
    2. The system "reads HourlyUsage records corresponding
    to the repo within specified time interval";
    3. The system "shows the user a table with these columns:
    Container (id), Inbound traffic (Gb),
    Outbound traffic (Gb), CPU time (min), Cost ($).
    Each table row corresponds to a container.
    Last row contains totals by all containers.
    The values in the table are usage stats by container
    within specified time interval".

:UC6 is specified.
:UC6 is a must.
UC6 where User compensates usage of Repository:
    "The user adds funds to his account, when it goes to a negative value.
    Funds can be added through selected payment system Stripe".
UC6/UX Payment system must "be in order of importance: 1) instant, 2) world-wide acceptable, 
3) supporting VISA and MasterCard, 4) secure".

:UC7 is specified.
:UC7 is a must.
UC7 where User terminates Repository:
    "The user just removes the repository and we immediately terminate
    the Docker container, close all ports, and stop routing domain names.
    This operation is irreversible".

HttpRequest is "a request that client application
(web browser, web service consumer, etc.) sends
to a web server via http protocol".

HttpResponse is "a response that a web server sends back
after it receives HttpRequest".

WebVisitor is "something sending http request to user's
Application deployed in Thindeck".

:UC10.1 is specified.
:UC10.1 is a must.
UC10.1 where WebVisitor(a visitor) utilizes Application(an app):
    1. The visitor creates HttpRequest(a request) "and sends it to the system";
    2. The system reads the request
    "to find out to which Thindeck user this request is related to";
    3. The system reads User(a user) "to check user.balance";
    4. The system notifies low balance to the user
    "if user.balance is below 5$";
    5. The system reads Container(a container)
    "the container to handle the request. If all containers are overloaded,
    then another one is started to handle the request";
    6. The app reads the request
    "instance of app running in a chosen container";
    7. The app creates HttpResponse(a response);
    8. The system creates HourlyUsage(a record)
    "and tracks utilized CPU time and traffic in this record.
    If a corresponding record already exists, then this record
    is updated instead of creating a new one".
UC10.1/3 when "user.balance is below or equals to zero":
    1. The system notifies zero balance to the user;
    2. Fail since "error page pointing out that user must top up
    his balance to utilize his application. The page should also contain
    a link to another page where the user can pay.
    If the user is Anonymous, he must log in first".

UC6.2 where System(a system) notifies low balance to User(a user):
    "The system sends the user an email notification one time
    when his balance is dropped below $5.
    We can also implement UI notifications".

UC6.3 where System(a system) notifies zero balance to User(a user):
    "The system sends the user an email notification one time when
    his balance is dropped below $0. We can also implement UI notifications".
yegor256 commented 10 years ago

When I test it at demo.requs.org, it doesn't break. Are you sure you're using the latest version of thindeck repo? It is using requs 1.12 at the moment.

kikec commented 10 years ago

I have latest version, however in pom.xml document i see that it uses Requs 1.10.1. Do you think it is the problem? I don't know why, because I forked latest version of Thindeck yesterday evening...

yegor256 commented 10 years ago

Something is wrong with your fork. It is definitely out of date. The latest version is 1.12

kikec commented 10 years ago

yes it seems to me that would be best to delete and reinstall Thindeck and start over. Is it possible? It is frustrating that I haven't managed to make any normal push. Every time there is this error.

yegor256 commented 10 years ago

Yes, sure, start over again. Just delete your fork and create it again.

kikec commented 10 years ago

OK, what about local to delete and reinstall again?

yegor256 commented 10 years ago

What do you mean? I didn't get it...

kikec commented 10 years ago

I mean my local Thindeck on my PC. I see that on local Thindeck I get old version

yegor256 commented 10 years ago

Yes, you should delete it, I think. Read this article: http://www.xdsd.org/2014/04/15/github-guidelines.html You should understand how git works in order to work in our projects. It's one of the most critical skills.

yegor256 commented 9 years ago

@davvd assign someone else pls

davvd commented 9 years ago

@davvd assign someone else pls

@yegor256 30 points was deducted from your rating

davvd commented 9 years ago

@davvd assign someone else pls

@yegor256 right, I will find someone else, no problem