OPENBUS-2586 Novo parâmetro -timeout para o busservices

 - fornecida implementação na reconfiguração dinâmica
 - novo método no configuration.idl
 - documentação do novo parâmetro
 - adição no busadmin (--set-calls-timeout e --get-calls-timeout)
 - adição de teste de uso *apenas* no busadmin
parent bd99fbce
......@@ -327,6 +327,8 @@ Valor padr
\item [-privatekey] Arquivo com chave privada do barramento.\\
Valor padrão é \code{openbus.key}.
\item [-timeout] Tempo em segundos de espera por respostas nas chamadas realizadas pelo barramento.\\
Valor padrão é 0 segundos, o que significa que deve esperar indefinidamente.
\item [-leasetime] Tempo em segundos de lease dos logins de acesso.\\
Valor padrão é 1800 segundos.
\item [-expirationgap] Tempo em segundos que os logins ficam válidos após o lease.\\
......
......@@ -130,6 +130,23 @@ interface Configuration {
long getMaxCacheSize()
raises (ServiceFailure);
/**
* \brief Redefine o tempo de espera por respostas nas chamadas do barramento.
*
* \param timeout Novo tempo de espera.
*/
void setCallsTimeout(in long timeout)
raises (UnauthorizedOperation, ServiceFailure);
/**
* \brief Retorna o tamanho de espera por respostas nas chamadas do barramento.
*
* \return Tamanho de espera atual. Tempo 0 significa que o barramento espera
* indefinidamente por respostas.
*/
long getCallsTimeout()
raises (ServiceFailure);
/**
* \brief Redefine o nível de log do barramento.
*/
......
......@@ -213,6 +213,10 @@ return function(...)
--set-max-cachesize=<integer>
* Mostra o tamanho máximo de caches LRU:
--get-max-cachesize
* Redefine o tempo de espera por respostas em chamadas do barramento:
--set-calls-timeout=<integer>
* Mostra o tempo de espera por respostas em chamadas do barramento:
--get-calls-timeout
* Redefine o nível de log do barramento:
--set-log-level=<integer>
* Mostra o nível de log do barramento:
......@@ -403,6 +407,12 @@ return function(...)
["get-max-cachesize"] = {
{n = 0, params = {}},
};
["set-calls-timeout"] = {
{n = 1, params = {}},
};
["get-calls-timeout"] = {
{n = 0, params = {}},
};
["set-log-level"] = {
{n = 1, params = {}},
};
......@@ -1479,6 +1489,14 @@ return function(...)
return handleConfigurationGetCall(cmd, "getMaxCacheSize", "maxcachesize")
end
handlers["set-calls-timeout"] = function(cmd)
return handleConfigurationCall(cmd, "setCallsTimeout", "number")
end
handlers["get-calls-timeout"] = function(cmd)
return handleConfigurationGetCall(cmd, "getCallsTimeout", "timeout")
end
handlers["set-log-level"] = function(cmd)
return handleConfigurationCall(cmd, "setLogLevel", "number")
end
......
......@@ -83,6 +83,7 @@ return function(...)
UnableToConvertLegacyDatabase = 17,
WrongAlternateAddress = 18,
InvalidMaximumCacheSize = 19,
InvalidOrbCallsTimeout = 20,
}
local reloadConfigs = {
......@@ -90,6 +91,7 @@ return function(...)
validator = {},
maxchannels = 1000,
maxcachesize = LRUCache.maxsize,
timeout = 0,
loglevel = 3,
oilloglevel = 0,
}
......@@ -100,7 +102,7 @@ return function(...)
database = "openbus.db",
privatekey = "openbus.key",
leasetime = 30*60,
expirationgap = 10,
challengetime = 0,
......@@ -266,6 +268,7 @@ Options:
-database <path> arquivo de dados do barramento
-privatekey <path> arquivo com chave privada do barramento
-timeout <seconds> tempo de espera por respostas nas chamadas realizadas pelo barramento
-leasetime <seconds> tempo de lease dos logins de acesso
-expirationgap <seconds> tempo que os logins ficam vlidas aps o lease
-challengetime <seconds> tempo de durao do desafio de autenticao por certificado
......@@ -336,6 +339,10 @@ Options:
log:config(msg.OilLogLevel:tag{value=Configs.oilloglevel})
-- validate time parameters
if Configs.timeout < 0 then
log:misconfig(msg.InvalidOrbCallsTimeout:tag{value=Configs.timeout})
return errcode.InvalidOrbCallsTimeout
end
if Configs.challengetime == 0 then
Configs.challengetime = Configs.expirationgap
end
......@@ -504,6 +511,9 @@ Options:
local ACS = require "openbus.core.legacy.AccessControlService"
legacy = ACS.IAccessControlService
end
if Configs.timeout ~= 0 then
orb:settimeout(Configs.timeout)
end
local iceptor = access.Interceptor{
prvkey = prvkey,
orb = orb,
......@@ -551,6 +561,7 @@ Options:
access:setGrantedUsers(self.__type, "delValidator", admins)
access:setGrantedUsers(self.__type, "setMaxChannels", admins)
access:setGrantedUsers(self.__type, "setMaxCacheSize", admins)
access:setGrantedUsers(self.__type, "setCallsTimeout", admins)
access:setGrantedUsers(self.__type, "setLogLevel", admins)
access:setGrantedUsers(self.__type, "setOilLogLevel", admins)
end
......@@ -630,6 +641,7 @@ Options:
setLogLevel("oil", Configs.oilloglevel)
self:setMaxChannels(Configs.maxchannels)
self:setMaxCacheSize(Configs.maxcachesize)
self:setCallsTimeout(Configs.timeout)
resetAdminUsers(admins)
unloadValidators(validators)
loadValidators(validators)
......@@ -704,6 +716,25 @@ Options:
return self.access:maxCacheSize()
end
function Configuration:setCallsTimeout(timeout)
local orb = self.access.orb
if timeout == 0 then
orb:settimeout(nil)
elseif timeout > 0 then
orb:settimeout(timeout)
else
ServiceFailure{
message = msg.InvalidOrbCallsTimeout:tag{value=timeout}
}
end
self.timeout = timeout
log:admin(msg.OrbCallsTimeout:tag{value=timeout})
end
function Configuration:getCallsTimeout()
return self.timeout
end
function Configuration:setLogLevel(loglevel)
return updateLogLevel("core", loglevel)
end
......@@ -730,6 +761,7 @@ Options:
local params = {
access = iceptor,
database = database,
timeout = Configs.timeout,
leaseTime = Configs.leasetime,
expirationGap = Configs.expirationgap,
challengeTime = Configs.challengetime,
......@@ -744,6 +776,7 @@ Options:
}
log:config(msg.LoadedBusDatabase:tag{path=Configs.database})
log:config(msg.LoadedBusPrivateKey:tag{path=Configs.privatekey})
log:config(msg.OrbCallsTimeout:tag{value=params.timeout})
log:config(msg.SetupLoginLeaseTime:tag{seconds=params.leaseTime})
log:config(msg.SetupLoginExpirationGap:tag{seconds=params.expirationGap})
log:config(msg.SetupLoginChallengeTime:tag{seconds=params.challengeTime})
......
......@@ -109,6 +109,8 @@ assert(execute("--del-entity=ENT04"))
assert(execute("--del-category=CTG02"))
-- reconfigurao dinmica
assert(execute("--set-calls-timeout=120"))
assert(execute("--get-calls-timeout"))
assert(execute("--set-max-cachesize=1024"))
assert(execute("--set-max-channels=100"))
assert(execute("--get-max-channels"))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment